Область применения триггеров не ограничивается какими-то строго очерченными рамками. Триггеры можно применять по своему усмотрению, исходя из требований к удобству и производительности выполняемых действий. Не следует применять триггеры для выполнения простых проверок, которые могут быть произведены с помощью правил или ограничений целостности. Кроме того, следует избегать использования триггеров, если те же действия могут быть реализованы с помощью хранимой процедуры или обычного пакета команд Transact-SQL. Использование триггеров нежелательно еще и по той причине, что они блокируют таблицу до завершения триггера, запрещая обращение к ресурсу других пользователей.
1. Оператор INSERT выполняется в таблице, где определен триггер.
2. Оператор INSERTрегистрируется в журнале.
3. Срабатывет триггер и выполняются его операторы.
После срабатывания триггера новые записи добавляются как в таблицу триггера так и в таблицу вставок. Таблица вставок хранит все зарегистрированные изменения, выполненные оператором INSERT,и позволяет ссылаться на вставленные данные в вызвавшем триггер операторе INSERT.
1. Оператор DELETE выполняется в таблице, где определен триггер.
2. Оператор DELETE регистрируется в журнале.
3. Срабатывет триггер и выполняются его операторы.
После срабатывания триггера DELETEудаляемые записи помещаются в специальную таблицу удалений, в которой хранятся копии удаляемых записей.
1. Оператор UPDATE выполняется в таблице, где определен триггер.
2. Оператор UPDATE регистрируется в журнале.
3. Срабатывет триггер и выполняются его операторы.
Выполнение оператора UPDATEусловно разделяют на два этапа: выполнение опертора DELETE,когда регистрируется предыдущее состояние данных и выполнение операторта INSERT, когда регистрируется будущее срстояние данных. При выполнении оператора UPDATEв таблице с определенным триггером исходные записи перемещаются в таблицу удалений, а обновленные записи перемещаются в таблицу вставок.
В таблице можно включить или отключить один или несколько триггеров. После отключения триггера его определение не удаляется из таблицы, но при выполнении операторов INSERT, UPDATE и DELETE триггер не срабатывает. Для включения или отключения триггеров служит оператор
ALTER TABLE таблица {ENABLE|Disable}TRIGGER имя триггера
После того как триггер стал ненужным или даже мешает работе, его следует удалить. Выполнение этой операции осуществляется с помощью команды DROP TRIGGER, имеющей следующий синтаксис: DROP TRIGGER {имя триггера} [,...n] Так как имя триггера уникально в пределах базы данных, то указание имени таблицы не требуется. С помощью одной команды DROP TRIGGER можно удалить несколько триггеров, перечислив их имена через запятую.
Просмотреть информацию о триггерах можно с помощью системных хранимых процедур или из SQL Server Enterprise Manager. Процедура sp_helptextимя триггера выводит код триггера. Процедура sp_helptriggerимя таблицы выводит список триггеров, определенных на указанной таблице.