Триггер – это специальная процедура языка PL/SQL. Обычная процедура начинает выполняться после ее вызова специальной командой, триггер же начинает выполняться, когда происходит определенное событие с таблицей. Событиями, которые вызывают выполнение триггера, являются операции вставки, удаления или обновления, выполняемые командами INSERT, DELETE или UPDATE. Триггеры выполняются либо до, либо после выполнения этих команд. Различают два варианта триггеров: триггеры, которые выполняются при обращении команды к строке таблицы, триггеры, которые выполняются до (или после) выполнения всей команды.
Использование триггера: аудита (отслеживания) модификаций данных; прозрачной журнализации (регистрации) событий; реализации комплексных организационных правил; автоматического вычисления значений столбцов; осуществления сложных процедур защиты; поддержки дублированных таблиц; сбор статистики по обращениям к таблице предотвращения незаконных транзакций;
Проектирование триггеров:
- Использовать триггеры для того, чтобы гарантировать, что при выполнении определенной операции будут выполнены связанные с ней действия.
- Использьзовать триггеры только для глобальных, централизованных операций.
- Не определяйть триггеры, дублирующие возможности, уже встроенные в ORACLE.
- Не создавать рекурсивных триггеров.
Создание триггера:
- CREATE TRIGGER имя триггера BEFORE/AFTER
- INSERT/UPDATE/DELETE ON имя таблицы [FOR EACH ROW]
- [WHEN условие ограничения триггера]
- BEGIN
- --предложения PL/SQL (SQL)
- END;