欢迎来到天天文库
浏览记录
ID:14138458
大小:73.50 KB
页数:11页
时间:2018-07-26
《数据库 触发器(超赞)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据库触发器案例一、课堂演示案例例一:创建一个简单的insert触发器先创建一个数据库备用createdatabasesampledbgousesampledbgo在新创建的库中创建一个表备用createtableaa(aint,bint)go在新创建的表上创建一个insert触发器usesampledbgoifexists(selectnamefromsysobjectswherename='tr_intoa'andtype='tr')droptriggertr_intoagocreatetriggertr_intoaonaaforinsertasprint's
2、uccessinsertedonerow!'查看这个触发器的定义文本sp_helptextcheckpubdate查看这个触发器的信息sp_helpcheckpubdate验证这个触发器的工作情况insertintoaavalues(1,2)----------------------------------------------------------------------------------------------------------------------例二:创建一个触发器监视insert操作,若插入的记录中版权费超过30,则提示用户,并回滚此
3、操作。usepubsgoifexists(selectnamefromsysobjectswherename='CheckRoyalty'andtype='tr')droptriggerCheckRoyaltygocreatetriggercheckroyaltyonroyschedforinsertasif(selectroyaltyfrominserted)>30beginprint'royaltytrigger:版权费不能超过30'print'请将版权费修改为小于30的值'rollbacktransactionendinsertintoroyschedval
4、ues('BU1032',2,5,90)select*fromroyschedwheretitle_id='BU1032'----------------------------------------------------------------------------------------------------------------------例三:创建一个触发器监视insert操作,若插入的记录中出版日期小于当前日期,则提示用户,并回滚此操作。usepubsgoifexists(selectnamefromsysobjectswherename='c
5、heckpubdate'andtype='tr')droptriggercheckpubdategocreatetriggercheckpubdateontitlesforinsertasif(selectpubdatefrominserted)6、,'business','1990-1-1')select*frominserted----------------------------------------------------------------------------------------------------------------------例四:列级update触发器示例usepubsgoifexists(selectnamefromsysobjectswherename='NoUpdatePayterms'andtype='tr')droptriggerNoUpdatePayterm7、sgoCREATETRIGGERNoUpdatePaytermsONsalesFORUPDATEASIFUPDATE(payterms)BEGINPRINT'不能修改订单的付费条款'ROLLBACKTRANSACTIONEND测试触发器的工作情况updatesalessetqty=8wherestor_id='6380'andord_num='6871'andtitle_id='BU1032'updatesalessetpayterms='aa'wherestor_id='6380'andord_num='6871'andtitle_id='BU1032'----8、-----
6、,'business','1990-1-1')select*frominserted----------------------------------------------------------------------------------------------------------------------例四:列级update触发器示例usepubsgoifexists(selectnamefromsysobjectswherename='NoUpdatePayterms'andtype='tr')droptriggerNoUpdatePayterm
7、sgoCREATETRIGGERNoUpdatePaytermsONsalesFORUPDATEASIFUPDATE(payterms)BEGINPRINT'不能修改订单的付费条款'ROLLBACKTRANSACTIONEND测试触发器的工作情况updatesalessetqty=8wherestor_id='6380'andord_num='6871'andtitle_id='BU1032'updatesalessetpayterms='aa'wherestor_id='6380'andord_num='6871'andtitle_id='BU1032'----
8、-----
此文档下载收益归作者所有