Триггеры
Триггеры
Триггер является подпрограммой, связанной с таблицей или просмотром, которая автоматически выполняет некоторые действия, когда строка таблицы или просмотра добавляется, изменяется или удаляется.
Триггер никогда не вызывается напрямую. Когда приложение или пользователь пытается выполнить INSERT, UPDATE или DELETE для строки таблицы, триггеры, связанные с этой таблицей, вызываются автоматически. Триггеры могут использовать исключения и события. Они также могут вызывать хранимые процедуры.
Триггеры являются мощным инструментом в различных вариантах использования. Перечислим способы использования триггеров.
* Для выполнения коррелированных изменений при выполнении оператора DML с таблицей. Например, триггер может добавлять записи во внутренний или внешний протокол изменений. Триггер AFTER DELETE (после удаления) может добавить строку в таблицу истории.
* Для проверки исходных данных.
* Для преобразования данных, например, для автоматического конвертирования входного текста в буквы верхнего регистра или для получения значения автоинкрементного ключа из генератора.
* Для информирования приложений об изменениях базы данных с использованием средств сообщения о событиях (event alerter).
* Для выполнения пользовательских каскадных изменений целостности данных.
* Чтобы сделать просмотр только для чтения изменяемым. Подробности см. в разд. "Преобразование просмотров только для чтения в изменяемые"главы 24.
Триггеры хранятся как объекты базы данных так же, как хранимые процедуры и исключения. Объявленные как ACTIVE, они остаются активными, пока не будут деактивированы оператором ALTER TRIGGER или удалены из базы данных с помощью DROP TRIGGER.
Триггер никогда не вызывается явно - активный триггер выполняется автоматически, когда заданная операция DML выполняется для его таблицы.
Преимущества использования триггеров
Перечислим преимущества использования триггеров.
* Автоматическое применение ограничения данных, чтобы убедиться, что пользователи вводят только допустимые значения в столбцы.
* Сокращение объема поддержки приложений, поскольку изменения триггеров автоматически отражаются на всех приложениях, которые используют связанные таблицы, без необходимости их повторной компиляции и сборки.
* Автоматическое протоколирование изменений таблиц. Приложение может использовать протоколирование изменений с помощью триггера, который вызывается при модификации таблицы.
* Автоматическое информирование об изменениях базы данных с помощью средств сообщения о событиях.