Поделиться через


Указание условий срабатывания DML-триггеров

Чтобы управлять срабатыванием DML-триггера, можно указать один из двух параметров.

  • Триггеры AFTER срабатывают после обработки действия, вызывающего срабатывание (INSERT, UPDATE или DELETE), триггеров INSTEAD OF и ограничений. Триггеры AFTER можно устанавливать путем указания ключевых слов AFTER или FOR. Так как эффект от ключевого слова FOR тот же, что и от AFTER, DML-триггеры с ключевым словом FOR также относятся к триггерам AFTER.

  • Триггеры INSTEAD OF срабатывают вместо действия, вызывающего срабатывание, и перед обработкой ограничений. Если в таблице имеются триггеры AFTER, они сработают после обработки ограничений. В случае нарушения ограничений выполняется откат действий триггеров INSTEAD OF, а триггер AFTER не срабатывает.

В каждой таблице или представлении может быть один триггер INSTEAD OF для каждого из действий, вызывающих срабатывание (UPDATE, DELETE или INSERT). Таблица может содержать несколько триггеров AFTER для каждого из вызывающих срабатывание действий.

Примеры

А. Использование триггера INSTEAD OF для замены стандартного действия, вызывающего срабатывание

CREATE TRIGGER TableAInsertTrig ON TableA
INSTEAD OF INSERT
AS ...

Б. Использование триггера AFTER для расширения стандартного действия, вызывающего срабатывание

CREATE TRIGGER TableBDeleteTrig ON TableB
AFTER DELETE
AS ...

В. Использование триггера FOR для расширения стандартного действия, вызывающего срабатывание

-- This statement uses the FOR keyword to generate an AFTER trigger.
CREATE TRIGGER TableCUpdateTrig ON TableC
FOR UPDATE
AS ...

См. также

Основные понятия