Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
Здравствуйте.
Имеется триггер TEST_TRIGGER в БД под FB2.0.
UPDATE RDB$TRIGGERS SET RDB$SYSTEM_FLAG = 1 WHERE RDB$TRIGGER_NAME = 'TEST_TRIGGER';
COMMIT;
Возможно ли после такой манипуляции вернуть SYSTEM_FLAG = NULL или 0???
Имеется триггер TEST_TRIGGER в БД под FB2.0.
UPDATE RDB$TRIGGERS SET RDB$SYSTEM_FLAG = 1 WHERE RDB$TRIGGER_NAME = 'TEST_TRIGGER';
COMMIT;
Возможно ли после такой манипуляции вернуть SYSTEM_FLAG = NULL или 0???
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
сделай b/r базе и пересоздай триггер, если он исчезнет. Вообще нефиг было "эксперименты" проводить. Спросил бы сначала...
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
Эээ. А почему "если"? Я думал, по-любому исчезнет.kdv писал(а):сделай b/r базе и пересоздай триггер, если он исчезнет.
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
Спасибо за совет, но потребность в таких экспериментах действительно была. Опишу ситуацию более подробно:kdv писал(а):сделай b/r базе и пересоздай триггер, если он исчезнет. Вообще нефиг было "эксперименты" проводить. Спросил бы сначала...
Имеется UDF библиотека, которая содержит функцию для извлечения BLOB поля и сохранение этого содержимого в файл. На таблицу RDB$PROCEDURES вешаем триггер AFTER INSERT/UPDATE/DELETE который вызывает UDF функцию и передает ей RDB$PROCEDURE_SOURCE (соответсвенно для извлечения тела процедуры в файл). В IBExpert создаем новую процедуру - на сервере появляется файл с телом процедуры, модифицируем процедуру - на сервере файл с телом процедуры обновляется, т.е. все происходит как и хотелось. Ок.
Далее - создаем sql скрипт который создает новую процедуру и накатываем его на БД с помощью ibescript - на сервере ничего не выгрузилось, хотя процедура в БД появилась (процедуру удалили).
А вот теперь и начались эксперименты: установливаем RDB$SYSTEM_FLAG = 1 для триггера который выгружает тело процедуры. Накатываем скрипт создания процедуры с помощью ibescript и на стороне сервера появляется файл с телом процедуры...
Как можно объяснить это? Как именно накатывает ibescript sql скрипты?
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
а кто вообще сказал, что триггеры на системных таблицах должны работать?
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
Об этом никто не говорил, но факты говорят об обратном и описанная мною ситуация имеет место быть. Триггер с флагом RDB$SYSTEM_FLAG = 1 действительно выполняется на системной таблице RDB$PROCEDURES в процессе накатывания скрипта с помощью ibescript.dimitr писал(а):а кто вообще сказал, что триггеры на системных таблицах должны работать?
Linux Classic Server FB 2.0.1.
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
продолжай работать с фактами. Когда и они перестанут работать, вспомнишь меня.
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
Фразы такого рода от Вас действительно звучат угрожающеdimitr писал(а):продолжай работать с фактами. Когда и они перестанут работать, вспомнишь меня.
Мне просто интересно почему триггер с RDB$SYSTEM_FLAG = 1 при накатке скрипта (создающем процедуру) c помощью ibescript вызывается по событию UPDATING, а в процессе создания процедуры из IBExpert вызывается и по событию INSERTING и UPDATING.
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
Если ты посмотришь на скрипт, который эксперт предусмотрительно показывает, то увидишь, что он сначала создаёт процедуру с пустым телом, а затем её альтерит.
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
Эх... вот бы CREATE TRIGGER ACTIVE ON METADATA <INSERT | UPDATE | DELETE>_SRG_ писал(а):Об этом никто не говорил, но факты говорят об обратном и описанная мною ситуация имеет место быть. Триггер с флагом RDB$SYSTEM_FLAG = 1 действительно выполняется на системной таблице RDB$PROCEDURES в процессе накатывания скрипта с помощью ibescript.dimitr писал(а):а кто вообще сказал, что триггеры на системных таблицах должны работать?
Linux Classic Server FB 2.0.1.
Re: Возможно ли изменить RDB$SYSTEM_FLAG в RDB$TRIGGERS?
в 3.0 ожидаются триггеры для DDL_SRG_ писал(а):Эх... вот бы CREATE TRIGGER ACTIVE ON METADATA <INSERT | UPDATE | DELETE>