天天看点

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 触发器。

执行

晚于:

约束处理

声明性引用操作

创建<b>插入的</b>和<b>删除的</b>表

触发操作

早于:

替代:

执行顺序

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

不适用

<b>插入的</b>和<b>删除的</b>表中的 <b>varchar(max)</b>、<b>nvarchar(max)</b> 和

<b>varbinary(max)</b> 列引用。

允许

<b>插入的</b>和<b>删除的</b>表中的 <b>text</b>、<b>ntext</b> 和 <b>image</b>

列引用。

不允许