- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
触发器综合实例第1页,共15页,星期日,2025年,2月5日触发器(trigger)是一种特殊的存储过程,它不同于一般的存储过程:一般的存储过程通过存储过程名称被直接调用触发器主要是通过事件进行触发而被执行。第2页,共15页,星期日,2025年,2月5日触发器的主要作用是实现由主键和外键等约束所不能保证的复杂的参照完整性和数据一致性。除此之外,触发器还有以下作用:触发器可以对数据库进行级联修改。实现比CHECK约束更为复杂的限制。比较数据修改前后的差别。强制表的修改要合乎业务规则。第3页,共15页,星期日,2025年,2月5日按照触发响应时间按的不同可以将触发器分为两大类:后触发器和前触发器。(1)后触发器(AfterTrigger):这种类型的触发器将在数据变动(UPDATE、INSERT和DELETE操作)完成后才被触发。指定AFTER与指定FOR相同。AFTER触发器只能在表上定义。在同一个数据表中可以创建多个AFTER触发器。默认的为AFTER触发器。第4页,共15页,星期日,2025年,2月5日按照触发响应时间按的不同可以将触发器分为两大类:后触发器和前触发器。(2)前触发器(InsertedOfTrigger):INSTEADOF触发器在数据变动以前被触发,并取代变动数据的操作(UPDATE、INSERT和DELETE操作),而去执行触发器定义的操作。INSTEADOF触发器可以在表或视图上定义。在表或视图上,每个UPDATE、INSERT和DELETE语句最多可以定义一个INSTEADOF触发器。第5页,共15页,星期日,2025年,2月5日语法格式:CREATETRIGGER[schema_name.]trigger_name ON{table|view} /*指定操作对象*/ [WITHENCRYPTION] /*说明是否采用加密方式*/ {FOR|AFTER|INSTEADOF} {[INSERT][,][UPDATE][,][DELETE]} [WITHAPPEND] [NOTFORREPLICATION] /*说明该触发器不用于复制*/AS{sql_statement[;][...n] |EXTERNALNAMEasseMBly_name.class_name.method_name }第6页,共15页,星期日,2025年,2月5日触发器中使用的特殊表当触发器引用视图或者临时表,并产生两个特殊的表:deleted表和inserted表。执行INSERT语句或UPDATE语句向表中插入数据行时,插入到触发器表中的行作为复本同时将被插入到inserted表中;执行DELETE语句删除表中数据时,触发表中被删除的行作为复本被插入到deleted表中;执行UPDATE语句修改数据时,先删除触发表中的旧行,并将该旧行插入deleted表中,再插入新行,同时将新行插入到inserted表中。第7页,共15页,星期日,2025年,2月5日触发器的主要作用是实现由主键和外键等约束所不能保证的复杂的参照完整性和数据一致性。除此之外,触发器还有以下作用:触发器可以对数据库进行级联修改。实现比CHECK约束更为复杂的限制。比较数据修改前后的差别。强制表的修改要合乎业务规则。第8页,共15页,星期日,2025年,2月5日使用触发器实现复杂的参照完整性和数据一致性。例1:若修改SC中一个记录的学号,则要检查S中是否存在与该学号相同的记录,若有则不允许修改,若没有则可以修改.第9页,共15页,星期日,2025年,2月5日CREATETRIGGERTRIGGER_SCON[dbo].[sc]FORUPDATEASIFUPDATE(SNO)BEGINDECLARE@SNO_NEWCHAR(2),@SNO_OLDCHAR(2),@SNO_CNTINTSELECT@SNO_OLD=SNOFROMDELETEDSELECT@SNO_CNT=COUNT(*)FROMSWHERESNO=@SNO_OLDIF@SNO_CNT0ROLLBACKTRANSACTIONEND第10页,共15页,星期日,2025年,2月5日使用触发器对数据库进行级联修改。例2.若修改表S中一学生的学号,则表SC中与该学生相关的学号被自动修改.
原创力文档


文档评论(0)