[MS SQL] Trigger

摘要:[MS SQL] Trigger

 

CREATE TRIGGER table_name
FOR | AFTER

AFTER 指定只在觸發的 SQL 陳述式指定的所有作業都執行成功時,才引發 DML 觸發程序。所有參考的重疊顯示動作和條件約束檢查也都必須成功之後,才會引發這個觸發程序。

當指定的關鍵字只有 FOR 時,預設值便是 AFTER。

檢視不能定義 AFTER 觸發程序。

INSTEAD OF

指定執行 DML 觸發程序來取代觸發的 SQL 陳述式,因此,會覆寫觸發陳述式的動作。DDL 或登入觸發程序不能指定 INSTEAD OF。

您最多只能在資料表或檢視上,定義每個 INSERT、UPDATE 或 DELETE 陳述式各一個 INSTEAD OF 觸發程序。不過,您可以定義檢視的檢視,讓每份檢視都有它自己的 INSTEAD OF 觸發程序。

在使用 WITH CHECK OPTION 的可更新檢視上,不允許使用 INSTEAD OF 觸發程序。當在指定了 WITH CHECK OPTION 的可更新檢視上加入 INSTEAD OF 觸發程序時,SQL Server 會產生錯誤。使用者必須在定義 INSTEAD OF 觸發程序之前,利用 ALTER VIEW 來移除這個選項。

{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }

指定當試圖針對這份資料表或檢視來執行時,會啟動 DML 觸發程序的資料修改陳述式。至少必須指定一個選項。您可以在觸發程序定義中,依照任何順序來指定這些選項的任何組合。

對於 INSTEAD OF 觸發程序而言,含有指定了重疊顯示動作 ON DELETE 的參考關聯性之資料表不能使用 DELETE 選項。同樣地,含有指定了重疊顯示動作 ON UPDATE 的參考關聯性之資料表也不能使用 UPDATE 選項。