指定 DML 触发器何时激发

可通过指定以下两个选项之一来控制 DML 触发器何时激发:

  • AFTER 触发器将在处理触发操作(INSERT、UPDATE 或 DELETE)、INSTEAD OF 触发器和约束之后激发。可通过指定 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 ...

请参阅

概念