Принципы планирования DML-триггеров
Microsoft SQL Server 2005 поддерживает два варианта реализации 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 нельзя определять для таблиц, на которые распространяются каскадные ограничения ссылочной целостности. |
Выполнение |
После следующих операций.
|
Перед следующей операцией.
Вместо следующей операции.
После следующих операций.
|
Порядок выполнения |
Можно задать выполнение в первую и в последнюю очередь. |
Неприменимо. |
Ссылки на столбцы varchar(max), nvarchar(max) и varbinary(max) в таблицах inserted и deleted |
Разрешены. |
Разрешены. |
Ссылки на столбцы text, ntext и image в таблицах inserted и deleted |
Запрещены. |
Разрешены. |
См. также
Основные понятия
Использование таблиц inserted и deleted