-
Notifications
You must be signed in to change notification settings - Fork 2
28. Триггеры DML T SQL
Триггеры DML — это хранимые процедуры особого типа, автоматически вступающие в силу, если происходит событие языка обработки данных DML, которое затрагивает таблицу или представление, определенное в триггере.
События DML включают инструкции INSERT, UPDATE или DELETE
. Триггеры DML могут использоваться для предписания бизнес- правил и правил целостности данных, выполнения запросов к другим таблицам и включения сложных инструкций Transact-SQL. Триггер и инструкция, при выполнении которой он срабатывает, считаются одной транзакцией, которую можно откатить назад внутри триггера. При обнаружении серьезной ошибки (например, нехватки места на диске) вся транзакция автоматически откатывается назад.
Триггеры AFTER
выполняются после выполнения действий инструкции INSERT, UPDATE, MERGE или DELETE
. Триггеры AFTER никогда не выполняются, если происходит нарушение ограничения, поэтому эти триггеры нельзя использовать для какой-либо обработки, которая могла бы предотвратить нарушение ограничения. Для каждой из операций INSERT, UPDATE или DELETE
в указанной инструкции MERGE
соответствующий триггер вызывается для каждой операции DML.
Триггеры INSTEAD OF
переопределяют стандартные действия инструкции, вызывающей триггер. Поэтому они могут использоваться для проверки на наличие ошибок или проверки значений на одном или нескольких столбцах и выполнения дополнительных действий перед вставкой, обновлением или удалением одной или нескольких строк.
Триггер CLR
может быть либо триггером AFTER
, либо триггером INSTEAD OF
. Вместо вызова хранимой процедуры на языке Transact-SQL триггер CLR вызывает один или несколько методов управляемого кода, являющихся членами сборки, созданной с помощью среды .NET Framework и загружены в SQL Server.