Sybase数据库基础知识

Sybase数据库基础知识

ID:36736325

大小:166.00 KB

页数:43页

时间:2019-05-14

Sybase数据库基础知识_第1页
Sybase数据库基础知识_第2页
Sybase数据库基础知识_第3页
Sybase数据库基础知识_第4页
Sybase数据库基础知识_第5页
资源描述:

《Sybase数据库基础知识》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Sybase数据库基础知识第十四章触发器本章概述本章的目标是理解并掌握触发器和它们的功能,描述触发器的作用及它们的通常用法。通过对本章的学习,你应能:定义触发器创建简单触发器创建含有事务控制语句的触发器本章要点触发器的定义和作用创建触发器触发器的工作原理声明完整性与触发器对于实现参照完整性的比较在触发器中的事务控制触发器的嵌套对触发器的限制和注意事项14.1触发器的定义和作用14.1.1触发器的定义触发器(Trigger)是一种特殊类型的存储过程,触发器的执行是通过事件来触发执行的。当用户对指定的表进行修改(

2、包括插入、删除和更新),SQLServer将自动执行在相应触发器中的SQL语句。trg_d_titles/*code*/titlesSQLServerdeletefromtitles...14.1.2触发器的作用stor_idord_num5023ABC-123-DEF-425-1Z35023NF-123-ADS-642-9G35023ZZ-999-ZZZ-999-0A070662345187131Asoap1327131Fsoap867salesdetailstor_idstor_name5023Thore

3、auReading8042Bookbeat7066Bamum’sstores如果主键被更新或删除外键值应如何变动?主键触发器是实现复杂完整性约束的有效方法。通过主键和外键的关联,实现了以下两种情形的参照完整性:不能删除或更新主表中正在被相应从表中外键参照的主键值。不能向从表插入或更新在相应主表的主键列中不存在的外键值。触发器除能实现声明完整性所不能实现的参照完整性外,它在应用中还扮演着其他重要的角色,包括:维护复制数据保持导出数据列的当前值实现高级形式的业务规则或复杂行为限制实现定制记录14.1.3触发器的触

4、发(执行)SQLServerdeletefromtitles...触发Trigger或使事务回退或允许删除一个数据修改语句(包括insert,update或delete语句)的执行只能触发相应的触发器一次。触发器可以控制修改数据的事务是允许执行还是被回退。用户动作insertdeleteupdate应用表inserttriggerdeletetriggerupdatetrigger数据库14.2创建触发器语法:createtriggertrigger_nameontable_namefor{insert,de

5、lete,update}asSQL_statementsreturn注意:触发器不能创建在临时表或视图上。一个触发器只能作用于一张表,然而在同一触发器中可以指定至多三种操作类型(即同时指定insert,delete,update);反之,一个表至多可以有三个不同类型的触发器,分别针对insert,delete和update。举例:为titles表创建一个删除行操作时被触发的触发器:createtriggertrg_d_titlesontitlesfordeleteas--SQL语句或语句组return14.3

6、触发器的工作原理14.3.1触发器工作中使用的两个专用表客户方SQLServer方面修改inserted(i)/deleted(d)表Insert插入新行i:被插入的行d:Deletei:i:删去老的行d:被删除的行Update插入新行i:被插入的行删去老的行d:被删除的行SQLServer为每个触发器都创建两个专用的工作表:inserted表和deleted表。这两个表的结构总是与被该触发器作用的表的结构相同。触发器工作完成,与该触发器相关的这两个表也被删除。inserted表:存放由insert或upda

7、te语句的执行而导致要加到该触发器作用的表中去的任何新行。deleted表:存放由delete或update语句的执行而导致要从被该触发器作用的表中删除的任何行。14.3.1触发器工作的行计数全局变量@@rowcount中存放着最近一次操作所影响(或所作用)的行数,这个值是触发器工作中一个非常有用的值,任何一个可执行的操作命令(除declare外)都会影响@@rowcount的值,对不返回行计数的命令(如if),其值为零。行计数在触发器工作中的作用:知道受影响的行数避免执行不必要的操作触发器利用行计数实现向从

8、表插入或更新行的参照完整性14.4举例14.4.1delete触发器与deleted表执行命令:SQLServer执行删除deletepublisherswherepub_id=“0736”publishers表pub_idpub_name1389algodatainfosystems0877Binnet&Hardlydeleted表pub_idpub_name0736NewAgeBooksinse

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

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

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