В чем разница между INSTEAD OF и триггером AFTER в SQL Server? - PullRequest
5 голосов
/ 23 марта 2010

В чем разница между триггером INSTEAD OF и AFTER в SQL Server?

Триггер INSTEAD OF, вызываемый до ограничения уникального ключа, будет ли триггер AFTER вызываться после ограничения уникального ключа?

Ответы [ 2 ]

10 голосов
/ 23 марта 2010

ПОСЛЕ триггера запускает после операции DML.INSTEAD OF триггер запускает вместо операции DML.

Большая разница.INSTEAD OF позволяет переопределить функциональность или реализовать функциональность, которая в противном случае не поддерживается.Обычно я использую его для создания обновляемых представлений.Иногда представление может не сохраняться на ключе, но, как разработчик, вы можете знать, какие базовые таблицы вы хотите обновить, чтобы вы могли сделать это, написав специальную логику, чтобы выполнить обновление за кулисами.Альтернатива - просто написать хранимую процедуру и заставить разработчиков вызывать эти процедуры вместо выполнения DML для представления, но DML для представлений, по моему мнению, является хорошей абстракцией, поскольку разработчики могут рассматривать представления как таблицы.Вот как должен выглядеть реляционный дизайн.

Что касается «после ограничения уникального ключа», триггер AFTER произойдет после успешного выполнения DML, поэтому он произойдет после любых нарушений (что приведет к откату).

0 голосов
/ 16 сентября 2013

После запуска выполняется после изменения данных, а вместо запуска выполняется до изменения данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...