Триггер – это специальная процедура языка PL/SQL. Обычная процедура начинает выполняться после ее вызова специальной командой, триггер же начинает выполняться, когда происходит определенное событие с таблицей. Событиями, которые вызывают выполнение триггера, являются операции вставки, удаления или обновления, выполняемые командами INSERT, DELETE или UPDATE. Триггеры выполняются либо до, либо после выполнения этих команд. Различают два варианта триггеров: триггеры, которые выполняются при обращении команды к строке таблицы, триггеры, которые выполняются до (или после) выполнения всей команды.
Использование триггера: аудита (отслеживания) модификаций данных; прозрачной журнализации (регистрации) событий; реализации комплексных организационных правил; автоматического вычисления значений столбцов; осуществления сложных процедур защиты; поддержки дублированных таблиц; сбор статистики по обращениям к таблице предотвращения незаконных транзакций;
Типы триггеров и их использование:
Триггер предложения BEFORE - действие триггера должно определять, можно ли разрешать выполнение предложения триггера. Триггер строки BEFORE - для вычисления специфических значений столбцов перед выполнением предложений INSERT или UPDATE.
Триггер предложения AFTER - при необходимости завершить предложение триггера до выполнения действия триггера. Триггер строки AFTER - При наличии триггера BEFORE, триггер AFTER может выполнять другие действия для того же самого предложения триггера.
Фраза WHEN устанавливает условие, при котором триггер выполняется.
Операции BEFORE/AFTER указываются при создании триггера, чтобы точно специфицировать, когда должно исполняться тело триггера по отношению к исполнению предложения триггера.