- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用SQL Server触发器实现数据表的级联更新.doc
使用SQL Server触发器实现数据表的级联更新
【摘 要】数据库的数据完整性是数据库正常运行的重要保证,而触发器是保证数据完整性的重要方式。本文讲述了DML触发器的分类及工作原理,并通过具体实例详细讨论了如何使用触发器来实现数据库的级联更新,从而更好的保证数据库数据完整性。
【关键词】触发器;数据完整性;级联更新
0 引言
数据库完整性就是保证数据库中数据的正确性和一致性。其中正确性指数据要符合语义规范,数据定义在规范的有效范围内;一致性是指数据库中所表示的同一事物的数据应当一致。在SQL Server中数据库完整性主要有约束来定义,约束定义了必须遵循的用于维护数据一致性和正确性的有效性规则。简单的完整性要求可以在定义基本表时通过创建约束来实现,但如果想要实现更为复杂的数据完整性要求,比如依据数据表的变化实现数据的自动级联更新等,这就需要用触发器来完成了。本文浅析了在 SQL Server中通过触发器实现数据库完整性的原理,并结合一个实例分析了使用触发器实现级联更新的一般过程。
1 触发器概述及其工作原理
触发器是SQL Server数据库的重要工具,可以被看作是一种特殊的存储过程。一般的存储过程通过存储过程名称被调用执行,而触发器是通过数据库事件的触发而被执行,在对触发器所监控的表执行添加、修改或删除操作时触发器被触发。触发器的过程体中可以包含复杂的SQL语句,因此触发器可以实现比约束更加复杂的数据完整性要求。
在 SQL Server 2005 中有两种触发器: DDL触发器和 DML 触发器。DDL触发器是被数据定义语句(DDL)所触发而被调用的触发器;DML触发器是被数据操作语句(DML)所触发而被调用的触发器。数据完整性规则主要由DML 触发器创建,因此本文主要讨论DML触发器。由于触发器被激活后所执行的操作不同,SQL Server中包含两种触发方式: After触发方式和Instead Of触发方式。After触发方式是比较常用的触发方式(另有一种For触发方式与After相同,是为与 SQL Server 早期版本兼容的可选项),这种触发方式的触发器在进行数据操作以后被触发,先执行了触发语句(插入、更新、删除),然后执行了触发器。INSTEAD OF触发方式在数据发生变化之前被触发,停止触发语句(插入、更新、删除)的执行,直接执行触发器定义的内容。
本文将以After触发器为例来讲述使用触发器实现数据库级联更新。
在实际应用中,SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted表,当触发器被执行时产生。这是两个逻辑表,存放于内存中,表的结构与被触发器作用的表的结构相同且由系统自动创建和撤销。
当执行Insert语句时,Inserted表中保存要向表中插入的所有行。
当执行Delete语句时,Deleted表中保存要从表中删除的所有行。
当执行Update语句时,相当于先执行一个Delete操作,再执行一个Insert操作。
2 触发器应用案例
下面我们以淘宝某网店数据表为例讨论一下使用触发器实现数据表的级联更新。
我们知道在商品购物页面点击立即购买后,虽然我们还没有付钱但是这就表示我们和商家之间已经生成了一个订单。那么其他人再打开此商品的购买页面时,页面上显示的库存数量就应该更新为新的库存数量了。其实这个过程就是通过触发器更新数据表来实现的。
在淘宝网站的后台,买家购买了某商品后就会生成一个新的订单,也就是说在订单表中会插入一条新的记录来表示这个新订单,其中就包含了订单编号、商品编号、商品价格、购买数量等信息。同时在库存表中被购买商品的库存数量也应该被更新为原来的库存数量减去购买数量从而生成新的库存数量。这个过程的实现就被称为数据表的级联更新,所谓级联更新也叫联动更新,指当我们修改了一个数据表中的某些数据,系统会自动去修改另一个数据表相应数据。
首先我们先要在订单表上建立一个insert触发器用于响应对订单表的插入操作。当我们点击立即购买后,系统会生成一个新的订单,然后把新订单的数据插入到订单表中,同时也会触发insert触发器这样订单数据也会同步插入到inserted表中,然后会执行这个触发器。那么我们就可以在这个触发器中定义一个更新操作,去同步更新库存表,让库存量跟新为新的库存量。
create trigger t1
on 订单表
for insert
as
update 库存表
set 库存数量=库存数量- (select 购买数量 from inserted)
where 商品编号=(select 商品编号 fro
您可能关注的文档
- 会理青皮软籽石榴种植效率的影响因素及改进方法.doc
- 会计人员做假的防范与治理.doc
- 会计信息化下的财务会计流程优化.doc
- 会计信息化环境下的财务控制研究.doc
- 会计信息失真与公司治理关系探讨.doc
- 会计信息失真与防范研究.doc
- 会计信息失真的原因及有效措施.doc
- 会计凭证实训平台设计.doc
- 会计制度全球性变革研究.doc
- 会计基础工作规范影响因素研究与分析.doc
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
最近下载
- 结题报告高中物理小课题.PPT
- NB∕T 32037-2017 光伏发电建设项目文件归档与档案整理规范.pdf VIP
- 2024《高考志愿填报咨询服务意愿的影响因素实证研究》16000字.docx
- 无线网络优化模考试题(附答案).docx
- 中图版高中地理必修第二册课后习题 第四章 国土开发与保护 第一节 京津冀协同发展的地理背景 (2).doc VIP
- 工厂消防安全设备检查记录表.docx VIP
- 海绵城市监理实施细则.doc VIP
- 人教版小学二年级数学下册期中试卷.doc VIP
- 巴黎奥运樊振东乒乓球故事介绍【优质公开课】精品PPT课件模板.pptx
- 丽声北极星分级绘本第一级上 A Day with Monster Toon课件 .pptx VIP
文档评论(0)