sql触发器insteadof
⑴ instead of instead触发器是 什么触发器啊
INSTEAD OF 触发器是sql Server 2000 的新添加的功能,AFTER 触发器等同于以前版本中的触发器。当为表或视图定义了针对某一操作(INSERT、 DELETE、 UPDATE) 的INSTEAD OF 类型触发器且执行了相应的操作时,尽管触发器被触发,但相应的操作并不被执行,而运行的仅是触发器SQL 语句本身。
INSTEAD OF 触发器的主要优点是使不可被修改的视图能够支持修改。其中典型的例子是分割视图(partitioned view)。为了提高查询性能,分割视图通常是一个来自多个表的结果集,但是也正因此而不支持视图更新。下面的例子说明了如何使用INSTEAD OF触发器来支持对分割视图所引用的基本表的修改。
⑵ sql中触发器instead of 和after的区别是什么
after触发器是在操作成功后,所采取的一些动作,而对于instead of触发器,对数据库的操作只是
一个“导火线”而已,真正起作用的是触发器里面的动作;往往这种触发器会有很多分支判断语句在里面,根据不用的条件做不同的动作触发器能处理更复杂的约束--简单的可用级联及简单约束来实现。
看看这个就差不多明白了:http://bbs.csdn.net/topics/300074591
⑶ sql语句的触发器问题,instead of、after、for事件的区别,还有execute as字句的使用。谢谢
after等价于for,是事后触发。instead of则会取代原来的操作,例如在你的例子里,将不再执行插入操作,而是执行触发器里的操作。
execute as是用来定义模块的执行上下文
EXECUTE AS { CALLER | SELF | OWNER | 'user_name' }
其中CALLER指模块调用方,SELF指创建或更改模块的用户,OWNER指模块的当前所有者, ‘user_name’ 则是指定的用户。