我是靠谱客的博主 爱听歌大白,最近开发中收集的这篇文章主要介绍[SQL2005触发器学习] Instead Of触发器 [SQL2005触发器学习] Instead Of触发器 ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

[SQL2005触发器学习] Instead Of触发器

1、Instead Of触发器的工作原理
    Instead Of触发器与After触发器的工作流程是不一样。After触发器是在SQLSERVER服务器接到执行SQL语句请求之后,先建立Inserted和Updated临时表,然后在更改物理表上的数据,最后才激活触发器程序。而Instead Of触发器在SQLSERVER服务器接到执行SQL语句请求,建立Inserted和Updated临时表后就激活了Instead Of触发器程序,至于SQL语句的请求如何操作数据就不在管了,把执行权全权叫给了Instead Of触发器。
2、Instead Of触发器使用范围
    ♣ 数据表里的数据禁止修改 
    ♣ 有可能要回滚修改的SQL语句,有些判断需要在执行之前进行,所以After触发器并不是最好的选择,Instead Of触发器更合适。
    ♣ 在试图中使用触发器, After触发器不能在视图中使用。
    ♣ 用自己 的方式去修改数据。可以用Instead Of 触发器来控制数据的修改方式和流程。
3、注意事项
    ☞ Instead Of触发器和After触发器均不能建立在临时表上。
    ☞ 在同一个数据表中,对每个操作(Insert,Update,Delete)只能建立一个Instead Of触发器。
    ☞ writetext语句不能触发Insert和update类型的触发器。
    ☞ Truncate Table 语句类似于Deleteuju,但是它不激活触发器。
4、Instead Of触发器实例    

 
   
Create Trigger OrderDetail_Insert ON OrderDetail Instead Of Insert AS Begin Set Nocount On ; /* 屏蔽触发器里Insert语句执行完后返回的所影响的行数的消息 */ Declare @Orderid int , @Price money , @discount real select @OrderId = OrderId, @Price = Price, @Discount = Discount from Inserted if ( @Discount ) > 0.6 begin print ' 折扣不能大于0.6 ' end else begin insert into OrderDetail(OrderId,Price,Discount) values ( @OrderId , @Price , @discount ) end End
复制代码

最后

以上就是爱听歌大白为你收集整理的[SQL2005触发器学习] Instead Of触发器 [SQL2005触发器学习] Instead Of触发器 的全部内容,希望文章能够帮你解决[SQL2005触发器学习] Instead Of触发器 [SQL2005触发器学习] Instead Of触发器 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部