INSTEAD OF触发器与AFTER触发器在SQL Server中有何不同?
INSTEAD OF触发器在唯一键约束之前被调用,而AFTER触发器在唯一键约束之后被调用吗?
INSTEAD OF触发器与AFTER触发器在SQL Server中有何不同?
INSTEAD OF触发器在唯一键约束之前被调用,而AFTER触发器在唯一键约束之后被调用吗?
AFTER触发器会在DML操作之后触发。 INSTEAD OF触发器会代替 DML操作触发。
这是一个很大的区别。INSTEAD OF触发器允许您覆盖功能,或实现其他不支持的功能。我通常使用它来创建可更新视图。有时候,一个视图可能不是键保存的,但作为设计者,您可能知道要更新哪个基表,因此可以编写特定的逻辑来在幕后进行更新。另一种选择是编写存储过程,并强制开发人员调用这些存储过程,而对视图执行DML是一个不错的抽象,因为开发人员可以像对待表一样处理视图。这就是关系设计的本意。
关于“唯一键约束之后”,AFTER触发器将在DML操作成功后触发,因此它将在任何违规操作之后发生(这将导致回滚)。
触发器(Trigger)分为After Trigger和Instead of Trigger两种类型,其中After Trigger在数据修改之后执行,而Instead of Trigger则在数据修改之前执行。