DML 触发器计划指南

有两个用于设计 DML 触发器的选项:

  • 执行 INSTEAD OF 触发器代替通常的触发操作。还可以对带有一个或多个基表的视图定义 INSTEAD OF 触发器,这些触发器可以扩展视图可支持的更新类型。

  • 在执行 INSERT、UPDATE 或 DELETE 语句操作之后执行 AFTER 触发器。指定 AFTER 与指定 FOR 相同。AFTER 触发器只能在表上指定。

下表对 AFTER 触发器和 INSTEAD OF 触发器的功能进行了比较。

函数

AFTER 触发器

INSTEAD OF 触发器

适用范围

表和视图

每个表或视图包含触发器的数量

每个触发操作(UPDATE、DELETE 和 INSERT)包含多个触发器

每个触发操作(UPDATE、DELETE 和 INSERT)包含一个触发器

级联引用

无任何限制条件

不允许在作为级联引用完整性约束目标的表上使用 INSTEAD OF UPDATE 和 DELETE 触发器。

执行

晚于:

  • 约束处理

  • 声明性引用操作

  • 创建插入的删除的

  • 触发操作

早于:

  • 约束处理

替代:

  • 触发操作

晚于:

  • 创建插入的删除的

执行顺序

可指定第一个和最后一个执行

不适用

插入的删除的表中的 varchar(max)、nvarchar(max) 和 varbinary(max) 列引用。

允许

允许

插入的删除的表中的 text、ntext 和 image 列引用。

不允许

允许