Компиляция триггера
Функция
Определение оператора компиляции существующего в БД триггера. Необходимость в перекомпиляции триггера возникает в случае, если в теле триггера используются претранслированные запросы, а указанные в них таблицы были пересозданы или была изменена их структура.
Спецификация
<компиляция триггера>
::=
REBUILD TRIGGER [имя схемы.]имя триггера
Синтаксические правила
-
<Имя триггера>
должно ссылаться на существующий в БД триггер.
Общие правила
-
Команда доступна только владельцу триггера.
-
Для выполнения команды надо иметь привилегию
RESOURCE
.
Пример
create or replace table test(ch char(10)); create or replace table test_audit(ch_new char(10), ch_old char(10), action char(10)); create or replace trigger test_trig before insert on test for each row execute for debug code if ( inserting ) then execute "insert into test_audit values (?, '', 'inserting');" using new.ch; // endif; // return true; // exceptions when all then return false; end; //проверка работы триггера insert into test values('value 1'); select * from test; select * from test_audit; //удалим таблицу, используемую в претранслированном запросе drop table test_audit; insert into test values('value 2'); select * from test; // запись со значением 'value 2' отсутствует, так как в триггере произошло исключение (отсутствует таблица test_audit) и в блоке обработки исключений было возвращено значение false, отменяющее основную операцию select * from test_audit; // несуществующая таблица (test_audit) //пересоздадим таблицу test_audit create or replace table test2(ind int); create or replace table test_audit(ch_new char(10), ch_old char(10), action char(10)); insert into test values('value 2'); select * from test; // запись со значением 'value 2' отсутствует, так как был пересоздан объект, используемый в претранслируемом запросе select * from test_audit; rebuild trigger test_trig; // пересоздадим триггер insert into test values('value 2'); select * from test;// запись со значением 'value 2' добавлена select * from test_audit;// запись со значением 'value 2' добавлена