В дополнение к триггерам обработки записи Вы можете определить триггеры, которые срабатывают на старте и завершении транзакции. Такие триггеры должны быть определены на уровне формы:
PRE – COMMIT – срабатывает перед началом внесения изменений;
POST–FORMS–COMMIT – срабатывает после внесения изменений, но до фиксации изменений в БД;
POST-DATEBASE-COMMIT – срабатывает после завершения транзакции. Ошибка в триггере приводит к невозможности отката транзакции.
Схема работы триггеров представлена на рис. 2.9
Рис. 2.9. Триггеры транзакций на уровне формы
Пример
PRE – COMMIT триггер инициирует глобальную переменную insert-tot
DEFAULT_VALUE ('0', global.insert_tot');
POST – FORMS – COMMIT триггер накапливает итоги в insert_tot.
Так как триггер срабатывает при удачном завершении процесса измене-ния данных, команды DML в этом триггере фиксируются.
DEFAULT_VALUE ('0', global.insert_tot');
INSERT INTO insert_audit (insert_total, time_stamp)
VALUES (TO – NUMBER (: global.insert_tot, SYSDATE);
: global.insert_tot : = 0;;
|