共用方式為


指定 DML 觸發程序引發的時機

您可以指定以下任一選項來控制 DML 觸發程序引發的時機:

  • 在觸發動作 (INSERT、UPDATE 或 DELETE)、INSTEAD OF 觸發程序以及處理過條件約束之後引發 AFTER 觸發程序。您可以指定 AFTER 或 FOR 關鍵字來要求 AFTER 觸發程序。 因為 FOR 和 AFTER 兩個關鍵字的作用一樣,使用 FOR 關鍵字的 DML 觸發程序也會被歸類為 AFTER 觸發程序。

  • 引發 INSTEAD OF 觸發程序取代觸發動作,且在處理條件約束之前。如果資料表上有 AFTER 觸發程序,將在處理條件約束後引發。如果違反條件約束,會回復 INSTEAD OF 觸發動作,並且不執行 AFTER 觸發程序。

每個資料表或檢視都可針對每個觸發動作 (UPDATE、DELETE 及 INSERT) 指定一個 INSTEAD OF 觸發程序。一個資料表可以針對每個觸發動作指定多個 AFTER 觸發程序。

範例

A. 使用 INSTEAD OF 觸發程序取代標準觸發動作

CREATE TRIGGER TableAInsertTrig ON TableA
INSTEAD OF INSERT
AS ...

B. 使用 AFTER 觸發程序加強標準觸發動作

CREATE TRIGGER TableBDeleteTrig ON TableB
AFTER DELETE
AS ...

C. 使用 FOR 觸發程序加強標準觸發動作

-- This statement uses the FOR keyword to generate an AFTER trigger.
CREATE TRIGGER TableCUpdateTrig ON TableC
FOR UPDATE
AS ...

請參閱

概念