- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
触发器综合实例.ppt
7.1 存储过程 7.2 触发器 触发器(trigger)是一种特殊的存储过程,它不同于一般的存储过程: 一般的存储过程通过存储过程名称被直接调用 触发器主要是通过事件进行触发而被执行。 触发器的主要作用是实现由主键和外键等约束所不能保证的复杂的参照完整性和数据一致性。 除此之外,触发器还有以下作用: 触发器可以对数据库进行级联修改。 实现比CHECK约束更为复杂的限制。 比较数据修改前后的差别。 强制表的修改要合乎业务规则。 按照触发响应时间按的不同可以将触发器分为两大类:后触发器和前触发器。 (1)后触发器( After Trigger ): 这种类型的触发器将在数据变动(UPDATE、INSERT和DELETE操作)完成后才被触发。 指定 AFTER 与指定 FOR 相同。 AFTER触发器只能在表上定义。 在同一个数据表中可以创建多个AFTER触发器。 默认的为AFTER触发器。 按照触发响应时间按的不同可以将触发器分为两大类:后触发器和前触发器。 (2)前触发器( Inserted Of Trigger ): INSTEAD OF触发器在数据变动以前被触发,并取代变动数据的操作(UPDATE、INSERT和DELETE操作),而去执行触发器定义的操作。 INSTEAD OF触发器可以在表或视图上定义。 在表或视图上,每个UPDATE、INSERT和DELETE语句最多可以定义一个INSTEAD OF触发器。 语法格式: CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } /*指定操作对象*/ [ WITH ENCRYPTION ] /*说明是否采用加密方式*/ { FOR |AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] /*说明该触发器不用于复制*/ AS { sql_statement [ ; ] [ ...n ] | EXTERNAL NAME asse MBly_name.class_name.method_name } 触发器中使用的特殊表 当触发器引用视图或者临时表,并产生两个特殊的表:deleted表和inserted表。 执行INSERT语句或UPDATE语句向表中插入数据行时,插入到触发器表中的行作为复本同时将被插入到inserted表中; 执行DELETE语句删除表中数据时,触发表中被删除的行作为复本被插入到deleted表中; 执行UPDATE语句修改数据时,先删除触发表中的旧行,并将该旧行插入deleted表中,再插入新行,同时将新行插入到inserted表中。 触发器的主要作用是实现由主键和外键等约束所不能保证的复杂的参照完整性和数据一致性。 除此之外,触发器还有以下作用: 触发器可以对数据库进行级联修改。 实现比CHECK约束更为复杂的限制。 比较数据修改前后的差别。 强制表的修改要合乎业务规则。 使用触发器实现复杂的参照完整性和数据一致性。 例1:若修改SC中一个记录的学号,则要检查S中是否存在与该学号相同的记录,若有则不允许修改,若没有则可以修改. CREATE TRIGGER TRIGGER_SC ON [dbo].[sc] FOR UPDATE AS IF UPDATE(SNO) BEGIN DECLARE @SNO_NEW CHAR(2) ,@SNO_OLD CHAR(2),@SNO_CNT INT SELECT @SNO_OLD=SNO FROM DELETED SELECT @SNO_CNT=COUNT(*) FROM S WHERE SNO=@SNO_OLD IF @SNO_CNT0 ROLLBACK TRANSACTION END 使用触发器对数据库进行级联修改。 例2.若修改表S中一学生的学号,则表SC中与该学生相关的学号被自动修改. CREATE TRIGGER TRIGGER_S ON [dbo].[s] FOR UPDATE AS IF UPDATE(SNO) BEGIN DECLARE @SNO_NEW CHAR(2) ,@SNO_OLD CHAR(2) SELECT @SNO_NEW=SNO FROM INSERTED SELECT @SNO_OLD=SNO FROM DELETED UPDATE SC SET SNO=@SNO_NEW WHERE SNO
您可能关注的文档
最近下载
- 工地禁酒免责协议书范本.docx VIP
- 海洋经济发展与海洋环境保护.pptx VIP
- 工业园区管理制度(示范版).docx VIP
- 附件行业标准目录-行业标准目录详解.PDF VIP
- 2024年甘肃张掖山丹马场招聘15人笔试模拟试题及答案解析.docx VIP
- GB51210-2016 建筑施工脚手架安全技术统一标准.docx VIP
- 旅游策划学教案.doc VIP
- 2025年吉林外国语大学辅导员招聘考试笔试备考题库及答案解析.docx VIP
- 2024年甘肃张掖山丹马场招聘15人笔试备考试题及答案解析.docx VIP
- 2025年河南省高校毕业生“三支一扶”计划招募(3000名)模拟试卷及参考答案详解一套.docx
文档评论(0)