.数据库原理及应用项目9触发器的创建和使用_第1页
.数据库原理及应用项目9触发器的创建和使用_第2页
.数据库原理及应用项目9触发器的创建和使用_第3页
.数据库原理及应用项目9触发器的创建和使用_第4页
.数据库原理及应用项目9触发器的创建和使用_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理及应用工程数据库原理及应用工程9 9触发触发器的创立和使用器的创立和使用CONTENTS工程工程1 数据库设计数据库设计工程工程2 搭建搭建SQL Server 2021 数据库管理系统环境数据库管理系统环境工程工程3 创立和管理数据库创立和管理数据库工程工程4 创立和管理数据表创立和管理数据表工程工程5 表中数据操作表中数据操作工程工程6 进行进行T-SQL程序设计程序设计工程工程8 存储过程的创立和使用存储过程的创立和使用工程工程7 事务、索引和视图的创立事务、索引和视图的创立与应用与应用工程工程9 触发器的创立和使用触发器的创立和使用 工程工程10 SQL Server的平安性

2、管理的平安性管理工程工程11 数据库的备份和恢复数据库的备份和恢复工程工程12 SQL Server数据转换数据转换工程工程13 SQL Server代理效劳任务代理效劳任务CONTENTS任务任务9.1 9.1 知识准备知识准备任务任务9.3 9.3 知识和技能扩展知识和技能扩展任务任务9.2 “9.2 “网络论坛数据库数据管理网络论坛数据库数据管理触发器的功能触发器的功能任务任务9.1 知识准备知识准备1.1.强化约束强化约束触发器能够实现比CHECK语句更为复杂的约束。约束和触发器在特殊情况下各有优势,触发器的主要好处在于它们可以包含使用T-SQL代码的复杂处理逻辑。在约束所支持的功能无

3、法满足应用程序的功能要求时,触发器就极为有用。触发器的功能触发器的功能任务任务9.1 知识准备知识准备2.2.跟踪变化跟踪变化触发器可以侦测数据库内的操作从而不允许数据库中未经许可的指定更新和变化。触发器的功能触发器的功能任务任务9.1 知识准备知识准备3.3.级联运行级联运行触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。触发器可通过数据库的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器的分类触发器的分类当效劳器和数据库中发生数据定义语言DDL事件时将调用DDL触发器。DDL触发器是SQL Server 2021的新增功能,一般用于在数据

4、库中执行管理任务。任务任务9.1 知识准备知识准备1.DDL1.DDL触发器触发器触发器的分类触发器的分类DML触发器是当数据库效劳器中发生数据操作语言DML事件时要执行的操作。任务任务9.1 知识准备知识准备2.DML2.DML触发器触发器DML触发器在以下方面非常有用。1DML触发器可通过数据库中的相关表实现级联更改。2DML触发器可以防止恶意或错误的 INSERT、UPDATE以及DELETE操作,并强制执行比CHECK约束定义的限制更为复杂的其他限制。3DML 触发器可以评估数据修改前后表的状态,并根据该差异采取措施。4 一个表中的多个同类DML触发器INSERT、UPDATE 或 D

5、ELETE允许采取多个不同的操作来响应同一个修改语句。触发器的分类触发器的分类1AFTER触发器在执行了 INSERT、UPDATE 或 DELETE 语句操作之后执行 AFTER 触发器。任务任务9.1 知识准备知识准备3.DML3.DML触发器的类型触发器的类型2INSTEAD OF触发器INSTEAD OF触发器在UPDATE、INSERT或DELETE语句执行时替代执行。3CLR触发器CLR触发器可以是AFTER触发器或INSTEAD OF触发器,还可以是DDL触发器。CLR触发器将执行在托管代码在.NET Framework中创立并在SQL Server中上载的程序集的成员中编写的方

6、法,而不用执行T-SQL存储过程。触发器的工作原理触发器的工作原理任务任务9.1 知识准备知识准备当对某一表进行修改,诸如进行UPDATE、INSERT、DELETE这些操作时,SQL Server就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规那么。DML触发器可分为以下几种。INSERT触发器当向表中插入数据时触发,自动执行触发器所定义的SQL语句。UPDATE触发器当更新表中某列、多列时触发,自动执行触发器所定义的SQL语句。DELETE触发器当删除表中记录时触发,自动执行触发器所定义的SQL语句。触发器的工作原理触发器的工作原理任务任务9.1

7、 知识准备知识准备每个触发器有两个特殊的表:插入表inserted表和删除表deleted表。deleted表用于存储DELETED和UPDATE语句所影响的行的副本,即在deleted表中临时保存了被删除或更新前的记录行。在执行DELETE或UPDATE语句时,行从触发器表中删除,并传输到deleted表中。inserted表用于存储INSERT和UPDATE语句所影响的行的副本,即在inserted表中临时保存了被插入或被更新后的记录行。在执行INSERT或UPDATE语句时,新加行被同时添加到inserted表和触发器表中。触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修

8、改。任务描述及分析任务描述及分析任务任务9.2 “网络论坛数据库数据管理网络论坛数据库数据管理网络论坛发跟帖,需要完成的业务有:1.跟帖数据表增加一条记录数据。2.用户表中要增加发帖用户的积分,即要修改用户表的积分字段值。3.用户积分提高,用户级别也可能要发生变化,即要修改用户表的级别字段值。4.主帖的单击次数、跟帖数要增加,最后回帖时间要改变,即要修改主帖表的跟帖数、最后回帖时间、单击次数字段值。如果有第一步事件发生,如何自动实现后三个步骤呢?使用触发器是最好的选择,触发器可以实现表之间的复杂业务规那么。任务任务9.2 “网络论坛数据库数据管理网络论坛数据库数据管理在SQL Server M

9、anagement Studio中创立触发器步骤如下。1单击“开始“所有程序“Microsoft SQL Server 2021“SQL Server Management Studio,启动SQL Server Management Studio工具。2在“对象资源管理器中中,连接到Server 2021数据库引擎实例。3选择数据库BookBBSDB,找到要创立触发器的数据表展开表目录,右击“触发器节点,选择“新建触发器命令。4在SQL Server Management Studio管理工具中,系统将翻开查询编辑器,并按照触发器的格式显示编码,如图9.1所示。图 9.1 触发器的显示编码5

10、在查询编辑器中,用户根据需要修改触发器名称,添加触发器内容,完成如下触发器的编码,再单击“执行按钮,在出现“命令已成功完成的提示后,即完成创立,如图9.2所示。任务任务9.2 “网络论坛数据库数据管理网络论坛数据库数据管理创立触发器的T-SQL语法如下:任务任务9.2 “网络论坛数据库数据管理网络论坛数据库数据管理【例如9-1】对于解决论坛发跟帖问题,当跟帖表Reply中插入跟帖信息时,应自动更新对应用户表Users和主帖表Topic数据。1.1.创立创立INSERTINSERT触发器触发器创立触发器代码如下:任务任务9.2 “网络论坛数据库数据管理网络论坛数据库数据管理【例如9-2】当删除交

11、易信息表时,自动备份被删除的数据到表backupTable中。2.2.创立创立DELETEDELETE触发器触发器任务任务9.2 “网络论坛数据库数据管理网络论坛数据库数据管理【例如9-3】跟踪用户的交易,交易金额超过20000元,那么取消交易,并给出错误提示。3.3.创立创立UPDATEUPDATE触发器触发器1启动SQL Server Management Studio,连接到数据库实例,在“对象资源管理器窗口里,选择“数据库实例“数据库“Studentmanager“表“dbo.students“触发器“myTrigger,单击右键,从快捷菜单中选中“修改选项,如图9.6所示。任务任务9

12、.3 知识与技能扩展知识与技能扩展通过SQL Server Management Studio查看触发器的步骤如下。查看和修改查看和修改DMLDML触发器触发器1.1.通过通过SQL Server Management StudioSQL Server Management Studio查看触发器查看触发器图 9.6“对象资源管理器窗口“修改选项2翻开“触发器myTrigger代码编辑框,如图9.7所示,在这里可以查看触发器,也可以修改触发器。如果要修改触发器,直接修改代码,然后单击工具栏的“执行按钮即可。图 9.7 触发器myTrigger的代码编辑框任务任务9.3 知识与技能扩展知识与技能

13、扩展通过存储过程sp_helptext可以查看触发器的文本信息,其语法代码如下:查看和修改查看和修改DMLDML触发器触发器2.2.通过存储过程通过存储过程sp_helptextsp_helptext查看触发器查看触发器图 9.8 存储过程sp_helptext的运行结果【例如9-4】运行结果如图9.8所示。任务任务9.3 知识与技能扩展知识与技能扩展通过存储过程sp_help可以查看触发器的相关信息,如名称、类型、创立时间等,其语法格式如下:查看和修改查看和修改DMLDML触发器触发器3.3.通过存储过程通过存储过程sp_helpsp_help查看触发器查看触发器图 9.9 存储过程sp_h

14、elp的运行结果【例如9-5】运行结果如图9.9所示。任务任务9.3 知识与技能扩展知识与技能扩展通过SQL Server Management Studio禁用或启用触发器,其步骤与通过SSMS修改触发器类似,只是在弹出的快捷菜单中选择“禁用选项,如启用,那么选择“启用选项,如图9.10所示。禁用和启用触发器禁用和启用触发器1.1.通过通过SQL Server Management StudioSQL Server Management Studio禁用或启用触发器禁用或启用触发器 图 9.10 “对象资源管理器窗口“禁用和“启用选项任务任务9.3 知识与技能扩展知识与技能扩展通过ALTER

15、 TABLE语句可以禁用或启用触发器,其语法代码如下。禁用和启用触发器禁用和启用触发器2.2.通过通过T-SQLT-SQL禁用或启用触发器禁用或启用触发器任务任务9.3 知识与技能扩展知识与技能扩展一种是通过SQL Server Management Studio,步骤与禁用触发器类似,只是在快捷菜单中选择“删除选项,翻开“删除对象窗口,单击“确定按钮即可。删除删除DMLDML触发器触发器2.2.通过通过T-SQLT-SQL禁用或启用触发器禁用或启用触发器另一种是通过T-SQL语句,使用DROP TRIGGER命令,语法代码如下:【例如9-5】删除触发器mytrigger。工程实训工程实训实训

16、实训 1 为网上书店数据库创立添加图书触发器为网上书店数据库创立添加图书触发器分析 1图书表添加记录时,响应触发器告知用户添加成功,并进行查看。2应该在图书表上创立INSERT触发器。实现思路与关键步骤 1启动SQL Server Management Studio,在“对象资源管理器中依次展开“数据库、“BookSaleDB数据库、“表节点。2展开“Books表,右击“触发器,选择“新建触发器。3在右边弹出的查询窗口显示“触发器的模板,输入触发器文本如下:4执行语句,提示成功信息,那么INSERT触发器创立成功。5使用INSERT语句向Books表添加一条记录,验证触发器功能。工程实训工程实

17、训实训实训 2 为网上书店数据库创立修改图书记录的触发器为网上书店数据库创立修改图书记录的触发器分析(1)随着时间变化,一些热销图书要进行降价处理,以便翻开销路。(2)降价促销图书,即打折扣要更新图书折扣字段值,为了了解折扣修改信息,在Books表上UPDATE触发器。(3) UPDATE触发器响应过程,存在两个临时表,即INSERTED和DELETED,所以我们可以比较修改图书折扣前后的数据变化。工程实训工程实训实训实训 2 为网上书店数据库创立修改图书记录的触发器为网上书店数据库创立修改图书记录的触发器实现思路与关键步骤 为表“Books创立一个修改记录后显示提示信息的触发器BooksUp

18、dateTrig。1查询编辑器中输入以下文本:2执行以上代码。3修改图书折扣信息,用以验证更新触发器。工程实训工程实训实训实训 3 为网上书店数据库创立删除图书触发器为网上书店数据库创立删除图书触发器分析(1)随着时间推移,大量图书已经不再销售,这些图书信息造成了图书表数据的冗余。(2)图书表中无用数据记录要被删除,作为历史销售图书资料。为了后期查询需要,删除的记录还想自动保存到备份数据表。(3)为图书表创立DELETE触发器,实现删除图书记录自动保存备份。工程实训工程实训实训实训 3 为网上书店数据库创立删除图书触发器为网上书店数据库创立删除图书触发器实现思路与关键步骤为 Books表创立一个删除记录后显示提示信息的触发器BooksDeleteTrig。1查询编辑器中输入以下文本:2执行以上代码。3 验证触发器,删除图书表记录后提示“记录已经被备份,删除成功!,查看备份数据表,删除的图书表记录已经添加到BooksBackup表。知识稳固知识稳固一、选择题1.CREATE TRIGGER语句中的WITH ENCRYPTION参数的作用是。A.加密触发器文本B.加密定义触发器的数据库C.加密定义触发器的数据库的数据D.以上都不对2.以下有关触发器的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论