使用sql server触发器实现数据表的级联更新

使用sql server触发器实现数据表的级联更新

ID:31362326

大小:105.00 KB

页数:5页

时间:2019-01-09

使用sql server触发器实现数据表的级联更新_第1页
使用sql server触发器实现数据表的级联更新_第2页
使用sql server触发器实现数据表的级联更新_第3页
使用sql server触发器实现数据表的级联更新_第4页
使用sql server触发器实现数据表的级联更新_第5页
资源描述:

《使用sql server触发器实现数据表的级联更新》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、使用SQLServer触发器实现数据表的级联更新  【摘要】数据库的数据完整性是数据库正常运行的重要保证,而触发器是保证数据完整性的重要方式。本文讲述了DML触发器的分类及工作原理,并通过具体实例详细讨论了如何使用触发器来实现数据库的级联更新,从而更好的保证数据库数据完整性。  【关键词】触发器;数据完整性;级联更新  0引言  数据库完整性就是保证数据库中数据的正确性和一致性。其中正确性指数据要符合语义规范,数据定义在规范的有效范围内;一致性是指数据库中所表示的同一事物的数据应当一致。在SQLServer中数据库完整

2、性主要有约束来定义,约束定义了必须遵循的用于维护数据一致性和正确性的有效性规则。简单的完整性要求可以在定义基本表时通过创建约束来实现,但如果想要实现更为复杂的数据完整性要求,比如依据数据表的变化实现数据的自动级联更新等,这就需要用触发器来完成了。本文浅析了在SQLServer中通过触发器实现数据库完整性的原理,并结合一个实例分析了使用触发器实现级联更新的一般过程。  1触发器概述及其工作原理  触发器是SQL5Server数据库的重要工具,可以被看作是一种特殊的存储过程。一般的存储过程通过存储过程名称被调用执行,而触发

3、器是通过数据库事件的触发而被执行,在对触发器所监控的表执行添加、修改或删除操作时触发器被触发。触发器的过程体中可以包含复杂的SQL语句,因此触发器可以实现比约束更加复杂的数据完整性要求。  在SQLServer2005中有两种触发器:DDL触发器和DML触发器。DDL触发器是被数据定义语句(DDL)所触发而被调用的触发器;DML触发器是被数据操作语句(DML)所触发而被调用的触发器。数据完整性规则主要由DML触发器创建,因此本文主要讨论DML触发器。由于触发器被激活后所执行的操作不同,SQLServer中包含两种触发方

4、式:After触发方式和InsteadOf触发方式。After触发方式是比较常用的触发方式(另有一种For触发方式与After相同,是为与SQLServer早期版本兼容的可选项),这种触发方式的触发器在进行数据操作以后被触发,先执行了触发语句(插入、更新、删除),然后执行了触发器。INSTEADOF触发方式在数据发生变化之前被触发,停止触发语句(插入、更新、删除)的执行,直接执行触发器定义的内容。  本文将以After触发器为例来讲述使用触发器实现数据库级联更新。  在实际应用中,SQLServer为每个触发器都创建了

5、两个专用表:Inserted表和Deleted表,当触发器被执行时产生。这是两个逻辑表,存放于内存中,表的结构与被触发器作用的表的结构相同且由系统自动创建和撤销。  当执行Insert语句时,Inserted表中保存要向表中插入的所有行。  当执行Delete语句时,Deleted表中保存要从表中删除的所有行。  当执行Update语句时,相当于先执行一个Delete操作,再执行一个Insert操作。5  2触发器应用案例  下面我们以淘宝某网店数据表为例讨论一下使用触发器实现数据表的级联更新。  我们知道在商品购物页

6、面点击立即购买后,虽然我们还没有付钱但是这就表示我们和商家之间已经生成了一个订单。那么其他人再打开此商品的购买页面时,页面上显示的库存数量就应该更新为新的库存数量了。其实这个过程就是通过触发器更新数据表来实现的。  在淘宝网站的后台,买家购买了某商品后就会生成一个新的订单,也就是说在订单表中会插入一条新的记录来表示这个新订单,其中就包含了订单编号、商品编号、商品价格、购买数量等信息。同时在库存表中被购买商品的库存数量也应该被更新为原来的库存数量减去购买数量从而生成新的库存数量。这个过程的实现就被称为数据表的级联更新,所

7、谓级联更新也叫联动更新,指当我们修改了一个数据表中的某些数据,系统会自动去修改另一个数据表相应数据。  首先我们先要在订单表上建立一个insert触发器用于响应对订单表的插入操作。当我们点击立即购买后,系统会生成一个新的订单,然后把新订单的数据插入到订单表中,同时也会触发insert触发器这样订单数据也会同步插入到inserted表中,然后会执行这个触发器。那么我们就可以在这个触发器中定义一个更新操作,去同步更新库存表,让库存量跟新为新的库存量。  createtriggert1  on订单表5  forinsert 

8、 as  update库存表  set库存数量=库存数量-(select购买数量frominserted)  where商品编号=(select商品编号frominserted)  可以看到经过这个触发器的执行,用户在下订单的同时商品的库存数量也被相应的修改为新的库存数量。  3结束语  在数据库的应用中,触发器起到了非常重要的作

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。