Принципы планирования DML-триггеров

Есть два параметра реализации триггеров DML.

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

  • Триггеры AFTER выполняются после выполнения инструкций INSERT, UPDATE или DELETE. Триггер AFTER аналогичен FOR. Триггеры AFTER могут быть определены только в таблицах.

Функциональность триггеров AFTER и INSTEAD OF сравнивается в следующей таблице.

Функция

Триггер AFTER

Триггер INSTEAD OF

Сущности, к которым применяется триггер

Таблицы.

Таблицы и представления.

Количество триггеров на таблицу или представление

Несколько триггеров на одно запускающее триггеры действие (UPDATE, DELETE или INSERT).

Один триггер на одно запускающее триггеры действие (UPDATE, DELETE или INSERT).

Каскадные ссылки

Нет ограничений.

Триггеры INSTEAD OF UPDATE и DELETE нельзя определять для таблиц, на которые распространяются каскадные ограничения ссылочной целостности.

Выполнение

После следующих операций.

  • Обработка ограничений.

  • Декларативные ссылочные действия.

  • Создание таблиц inserted и deleted.

  • Действие, запускающее триггер.

Перед следующей операцией.

  • Обработка ограничений.

Вместо следующей операции.

  • Действие, запускающее триггер.

После следующих операций.

  • Создание таблиц inserted и deleted.

Порядок выполнения

Можно задать выполнение в первую и в последнюю очередь.

Неприменимо

Ссылки на столбцы varchar(max), nvarchar(max) и varbinary(max) в таблицах inserted и deleted

Разрешены.

Разрешены.

Ссылки на столбцы text, ntext и image в таблицах inserted и deleted

Запрещены.

Разрешены.

См. также

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