Триггеры представляют собой разновидность хранимых процедур, запускаемых автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Триггер запускается автоматически при вставке, модификации или удалении данных в определенной таблице.
Наиболее часто триггеры применяются для сложных критериев в базе данных в случае, когда недостаточно стандартных ограничений и табличных средств по обеспечению целостности данных. Триггеры можно рассматривать как своего рода фильтры, вступающие в действие после выполнения всех операций в соответствии с правилами, стандартными значениями и т. п. В SQL Server 2000 появилась возможность создавать триггеры и для представлений.
Триггер и вызвавший его оператор Transact-SQL рассматриваются как единая транзакция, отменяемая (откатываемая) из триггера. Обычно в состав триггера входит набор команд выполнения некоторых действий над данными или проверки определенных условий. При невозможности обработки данных или невыполнимости условий происходит откат транзакции.
Создание триггера возможно владельцем базы данных. Это ограничение позволяет избежать случайного изменения структуры таблиц, способов связи с ними других объектов и т. п.
Для создания триггеров используется оператор CREATE, упрощенный формат которого имеет следующий вид:
CREATE TRIGGER [владелец.]имя_триггера
ON [владелец. ]{имя_ таблицы | имяпредставления}
[WITH ENCRYPTION]
FOR [{AFTER | INSTEAD OF}]
{INSERT, UPDATE, DELETE}
AS
<onepaTopbi_SQL>
Параметр WITH ENCRYPTION (С шифрованием) служит для предотвращения возможности прочтения текста триггера после помещения его на сервер.
После ключевого слова FOR указывается тип триггера: стандартный (AFTER), запускаемый после выполнения пользователем изменений данных, либо выполняемый взамен команды, приведшей к запуску триггера (INSTEAD OF). По умолчанию считается заданным тип AFTER.
Ключевые слова INSERT (Вставить), UPDATE (Обновить) и DELETE (Удалить) определяют операции, которые инициируют выполнение триггера.