Страница 1 из 1

баг при выполнении триггера

Добавлено: 13 янв 2011, 08:37
vovich
Есть FirebirdSS 2.5
тригер имеет вид:

Код: Выделить всё

CREATE TRIGGER ZHURNAL_NARYAD_AU FOR ZHURNAL_NARYAD
ACTIVE AFTER UPDATE
POSITION 0
AS
BEGIN
if ((NEW.M_DEL=1) and (OLD.M_DEL<>1)) then
   begin
   Update ZHURNAL_NARYAD_BRIGADA SET M_DEL=1 WHERE ID_ZHURNAL=NEW.ID;
   Update ZHURNAL_NARYAD_INSTROUT SET M_DEL=1 WHERE ID_ZHURNAL=NEW.ID;
   Update ZHURNAL_NARYAD_INSTRIN SET M_DEL=1 WHERE ID_ZHURNAL=NEW.ID;
   Update ZHURNAL_NARYAD_MESTO SET M_DEL=1 WHERE ID_ZHURNAL=NEW.ID;
   end
END
на таблицы внутри if пользовательне имеет прав обновление, НО при невыполнении условия if, выскакивает ошибка, что пользователь не иеет прав на обновлении. Т.е. тригер зачем-то все равно проверяет комманды внутри условия, которое не выполняются. Вопрос- зачем?

Re: баг при выполнении триггера

Добавлено: 13 янв 2011, 14:35
Dimitry Sibiryakov
На всякий случай. Сервер не может предсказать будет выполняться кусок кода или нет.

Re: баг при выполнении триггера

Добавлено: 13 янв 2011, 14:42
dimitr
права выполняются на этапе препаре, когда ветвление неизвестно

Re: баг при выполнении триггера

Добавлено: 14 янв 2011, 09:54
vovich
все таки странное поведение, т.е. без назначения ненужных мне прав на таблицы я никак не могу использовать в тригерах подобные конструкции. И никак не выключить подобную проверку?

Re: баг при выполнении триггера

Добавлено: 14 янв 2011, 10:01
dimitr
никак на оба вопроса. Это нормально и наверняка даже соответствует стандарту.

Re: баг при выполнении триггера

Добавлено: 14 янв 2011, 14:49
Dimitry Sibiryakov
vovich писал(а):т.е. без назначения ненужных мне прав на таблицы я никак не могу использовать в тригерах подобные конструкции.
Похоже, ты не в курсе, что права можно дать не пользователю, а непосредственно триггеру...