Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать
Модераторы: kdv, dimitr
-
vovich
- Сообщения: 2
- Зарегистрирован: 13 янв 2011, 08:28
Сообщение
vovich » 13 янв 2011, 08:37
Есть 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, выскакивает ошибка, что пользователь не иеет прав на обновлении. Т.е. тригер зачем-то все равно проверяет комманды внутри условия, которое не выполняются. Вопрос- зачем?
-
dimitr
- Разработчик Firebird
- Сообщения: 888
- Зарегистрирован: 26 окт 2004, 16:20
Сообщение
dimitr » 13 янв 2011, 14:42
права выполняются на этапе препаре, когда ветвление неизвестно
-
vovich
- Сообщения: 2
- Зарегистрирован: 13 янв 2011, 08:28
Сообщение
vovich » 14 янв 2011, 09:54
все таки странное поведение, т.е. без назначения ненужных мне прав на таблицы я никак не могу использовать в тригерах подобные конструкции. И никак не выключить подобную проверку?
-
dimitr
- Разработчик Firebird
- Сообщения: 888
- Зарегистрирован: 26 окт 2004, 16:20
Сообщение
dimitr » 14 янв 2011, 10:01
никак на оба вопроса. Это нормально и наверняка даже соответствует стандарту.
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Сообщение
Dimitry Sibiryakov » 14 янв 2011, 14:49
vovich писал(а):т.е. без назначения ненужных мне прав на таблицы я никак не могу использовать в тригерах подобные конструкции.
Похоже, ты не в курсе, что права можно дать не пользователю, а непосредственно триггеру...