一.工作流程:
1.Instead of :
SQL Server接到执行SQL语句请求->建立临时的Inserted 表与Deleted表->触发Instead Of触发器->结束。注意:此触发器将代替原来要执行的Insert、Delete 或update操作;
例如:A表有一个关于Instead of Insert 的触发器,向A表插入一行数据时,触发器将要代替“向A表插入一行数据的操作”,至于什么操作,由触发器的内容决定;
2.After:
SQL Server接到执行SQL语句请求->建立临时的Inserted 表与Deleted表->执行SQL语句->触发Instead Of触发器->结束。
二.Instead of 用途
1.多表连接的视图数据更新,可以写相应的Instead of 语句去更新多个表;
2.数据库某些表禁止进行Insert、Delete、Update,则可以写Instead of Insert、Instead of Delete、Instead of Update来屏蔽原来要进行的操作;
三.使用触发器注意事项
1.触发器与表或视图的对应关系:After只可用于基本表,After与instead of 可用于基本表与视图,一个表可以对应多个触发器,一个触发器只可以属于一个表或视图;
2.Instead of 类型的删除、更新、插入操作,各只可出现一次,After类型则不限;
3.一个操作同时存在于Instead of 与After中时,Instead of 的一定会执行,After的则不一定会执行。如果Instead里执行的是非激活类型的操作,则不会执行After里面同种类型的操作。例如:Insert语句同时存在于Instead of 与After中,如果Instead of Insert 里面执行的是非本表的Insert语句操作,那么After Insert 就不会执行了。