Триггеры Oracle подобны процедурам PL/SQL, но вызываются автоматически базой данных в ответ на определенные события. Для администраторов баз данных триггеры удобны для решения задач, связанных с аудитом и обеспечением безопасности. Помимо стандартных триггеров Oracle, которые вызываются перед и после выполнения операторов DML, существуют мощные триггеры, связанные с системными событиями, такими как запуск и останов базы данных, а также вход и выход пользователей. В будущих заметках блога мы обсудим применение триггеров для повышения безопасности базы данных.
Триггер создается оператором CREATE TRIGGER. Триггер можно заставить срабатывать перед (BEFORE), после (AFTER) и вместо (INSTEAD OF) определенного события.
В следующем примере показана структура оператора CREATE TRIGGER для триггера BEFORE события. Перед тем, как оператор DML удалит, вставит или обновит строку в таблице employee, Oracle автоматически вызовет этот триггер.
SQL> CREATE TRIGGER scott.emp_permit_changes BEFORE DELETE OR INSERT OR UPDATE ON employees . . . /* Далее следует ваш код SQL или PL/SQL
После создания триггер по умолчанию включен. Если по какой-то причине его необходимо временно отключить, воспользуйтесь следующим оператором:
SQL> ALTER TRIGGER test DISABLE;
Повторно включить триггер можно с помощью такой команды:
SQL> ALTER TRIGGER test ENABLE;