数据库编程(2)

数据库编程(2)

ID:33506569

大小:6.28 MB

页数:68页

时间:2019-02-26

数据库编程(2)_第1页
数据库编程(2)_第2页
数据库编程(2)_第3页
数据库编程(2)_第4页
数据库编程(2)_第5页
资源描述:

《数据库编程(2)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据库原理与应用第7章数据库高级应用(2)1第7章数据库高级应用7.1T-SQL程序设计7.2存储过程7.3触发器7.4备份和还原27.3T-SQL程序设计7.3.1触发器的概念、作用和分类7.3.2触发器的工作原理7.3.3创建触发器7.3.4查看触发器7.3.5修改、删除触发器37.3.1触发器的概念、作用和分类1.概念触发器是一种特殊的存储过程执行条件:事件触发触发器的四要素(1)名称(2)定义的目标(3)触发条件(4)触发逻辑:触发器的具体内容47.3.1触发器的概念、作用和分类2.作用:保证复杂的参照完整性和数据一致性•强化约束:实现复杂的check约束•跟踪变化:侦测数据库内的

2、不应有的更新、变化•级联运行:可自动级联,以致影响整个数据库•触发器的调用:可以调用存储过程触发器性能通常比较低,主要在其他表的处理上57.3.1触发器的概念、作用和分类3.类型按照触发事件的不同进行分类:(1)DML触发器当对数据库中的数据进行数据操纵(DML)时被自动运行。DML触发器触发动作:INSERT、UPDATE和DELETE三种。(2)DDL触发器7.3.1触发器的概念、作用和分类(1)DML触发器After触发器:(默认类型)执行Insert、Update、Delete操作之后,才执行。(表中数据已经变动之后)Insteadof触发器:当执行Insert、Update、

3、Delete操作时,先执行触发器中的代码,来取代相应的操作。(只执行触发器,不执行替相应操作)优点:使不可被修改的视图能够支持修改。77.3.1触发器的概念、作用和分类2.DDL触发器由数据定义语句(DDL)触发,即以CREATE、ALTER、DROP等关键字开头的语句。主要作用:是执行管理操作(审核系统、控制数据库的操作等)。如:(1)防止对数据库架构进行某些修改;(2)希望数据库中发生某些变化以利于相应数据库架构中的更改;(3)记录数据库架构中的更改或事件。DDL触发器只在响应由T-SQL语法所指定的DDL事件时才会触发。7.3T-SQL程序设计7.3.1触发器的概念、作用和分类

4、7.3.2触发器的工作原理7.3.3创建触发器7.3.4查看触发器7.3.5修改、删除触发器97.3.2触发器的工作原理1.DML触发器工作时建立两个临时表(1)inserted表:存储insert和update语句所影响的数据行副本。inserted中的行是触发器表中新行的副本。(2)deleted表:存储delete和update语句所影响的数据行副本deleted中的行是从触发器表中删除的行。触发器目标表和deleted表没有相同的行107.3.2触发器的工作原理2.这两个表的特点系统自动维护存储在内存中对用户只读两个表的结构与触发器目标表的结构相同触发器工作完成后,系统自动删除11

5、7.3.2触发器的工作原理3.各种操作时触发器的工作insert触发器当插入数据时,insert触发器将触发执行,新的记录会增加到触发器表和inserted表。delete触发器当删除数据时,delete触发器将触发执行,被删除的记录会存放到deleted表中。update触发器相当于插入一条新纪录,删除一条旧记录。127.3T-SQL程序设计7.3.1触发器的概念、作用和分类7.3.2触发器的工作原理7.3.3创建触发器7.3.4查看触发器7.3.5修改、删除触发器137.3.3创建触发器1.创建DML触发器格式:同一模式下须唯一CREATETRIGGER<触发器名>ON<表名

6、视图名>

7、触发器的目标表[WITHENCRYPTION]{FOR

8、AFTER

9、INSTEADOF}{[insert][,][update][,][delete]}触发操作AS<触发动作体>147.3.3创建触发器[例1]创建一个向学生表添加新记录时显示欢迎信息并显示S表信息的触发器。CreateTriggerT_InOnSafterinsertasBeginprint‘欢迎新同学的到来!‘select*fromsEnd157.3.3创建触发器建立触发器的条件CREATETRIGGER语句必须是批处理语句中的第一条;只有表的拥有者可以创建触发器;一个表只能创建一定数量的触发器;在同一模式下,触发器名

10、必须惟一;当触发器被激活时,只有触发条件为真时触发动作体才执行。167.3.3创建触发器[例2]为S表建立一个触发器t2,禁止删除学号为0215122的学生CREATETRIGGERt2ONSFORUpdate,DeleteASIF(='0215122')(selectsnofromdeleted)beginprint'不允许删除该学生,操作失败!'rollbackend177.3.3创建触发器[例7-25]在S表中删除

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

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

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