网站大量收购独家精品文档,联系QQ:2885784924

使用SQL Server触发器实现数据表的级联更新.docVIP

使用SQL Server触发器实现数据表的级联更新.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档