SQL Server中的INSTEAD OF和AFTER触发器有什么区别?
在唯一键约束之前调用的INSTEAD OF触发器,AFTER触发器是否会在唯一键约束后调用?
答案 0 :(得分:10)
AFTER触发器在 DML操作后触发。 INSTEAD OF触发器触发而不是 DML操作。
差异很大。 INSTEAD OF允许您覆盖功能,或实现不受支持的功能。我使用它的常见位置是创建可更新的视图。有时视图可能不是密钥保留的,但作为设计者,您可能知道要更新哪些基表,因此您可以通过编写特定逻辑来在后台进行更新。另一种方法是编写存储过程并强制开发人员调用这些过程而不是在视图上执行DML,但在我看来,视图上的DML是一个很好的抽象,因为开发人员可以处理像表这样的视图。这就是关系设计的意义所在。
关于“在唯一键约束之后”,AFTER触发器将在DML成功之后发生,因此它将在任何违规之后发生(这将强制回滚)。
答案 1 :(得分:0)
在数据修改后执行触发器而不是在数据修改之前执行触发器。