![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как внутри триггера запретить вносить изменения? [D6, IB6.x]
AlexanderSK © (2004-07-07 15:49:00)Подскажите, пожалуйста, как реализовать триггер внутри которого при определенном стечении обстоятельств запретить внесение изменения в таблицу?
vv_fran (2004-07-08 08:15:00) [1]Типа так:
CREATE EXCEPTION MAYTABLE_UPDATE 'Нельзя редактировать строку с кодом 0!';
CREATE TRIGGER MAYTABLE_BU0 FOR MAYTABLE
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
if (MAYTABLE.cod = 0 ) then EXCEPTION MAYTABLE_UPDATE;
end
TohaNik (2004-07-07 17:37:00) [2]Ага забавно получается - юзер меняет а оно никак причем мольча:)
Ну а если серьезно иногда бывает что изменение пользователем в одной таблице влечет изменения(о которых пользователь и не знает) в других что может привести к "определенным стечениям обстоятельств", а может и нет. ИМХО тогда не обязательно генерить
exeption чтоб лишний раз кнопку не жать.
Курдль (2004-07-07 17:19:00) [3]
> TohaNik © (07.07.04 16:44) [4]
> то тогда new.MyValue = old.MyValue
А юзеры не офигеют от такого "искуственного интеллекта"? :)
TohaNik (2004-07-07 16:44:00) [4]Ну м. так
чего то внутри тригера делали и получили "определенном стечение обстоятельств"
то тогда new.MyValue = old.MyValue
Курдль (2004-07-07 16:09:00) [5]
> AlexanderSK (07.07.04 15:49)
> Подскажите, пожалуйста, как реализовать триггер внутри которого
> при определенном стечении обстоятельств запретить внесение
> изменения в таблицу?
Для начала попробовать выразить это "сечение обстоятельств" в виде бизнес правила -> check constraint. Если не получится - генерить исключение в триггере [1].
> Соловьев © (07.07.04 16:03) [2]
> или условие
А это как?
Соловьев (2004-07-07 16:03:00) [6]или условие
Sandman25 (2004-07-07 15:50:00) [7]сгенерить exeption