第10章 数据库_第1页
第10章 数据库_第2页
第10章 数据库_第3页
第10章 数据库_第4页
第10章 数据库_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社第10章 触发器 学习目标 本章要点上机练习 习 题电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社学习目标 触发器是一个在修改指定表中的数据时强制执行的存储过程。由于用户无法绕过触发器,因此触发器成为了强制执行复杂业务逻辑,保证数据完整性的手段。我们前面学习过的约束只能实现简单的数据完整性检查,通过触发器,我们可以实现非常复杂的数据完整性检查。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社学习目标本章介绍了触发器的概念,以及如何创建、使用和维护触发器等内容,通过本章学习将

2、学会如何创建、删除以及维护触发器。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社本章要点 触发器的概念创建和应用触发器修改和删除触发器电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的概念 SQL Server 2000提供了两种主要机制来强制业务规则和数据完整性:即约束和触发器。触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。唤醒调用触发器以响应INSERT、UPDATE或DELETE语句。 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的概念 触发器可以查询其它表,还可以包含复杂

3、的 Transact-SQL 语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到严重错误,则整个事务即自动回滚。 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的概念 基本概念 使用触发器的优点 触发器的分类 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社基本概念 触发器实际就是一组代码,当表格中某个数据发生变化时,触发器就开始工作。它是控制与“插入”、“修改”、“删除”等相关的数据库的一种方法;同时,它也能用来维护数据的完整性。触发器的概念比较触发器与约束 电脑基础实例上机系列丛书SQL Server数据库应用

4、教程清华大学出版社触发器的概念触发器是特殊类型的存储过程,它能在任何试图改变表中由触发器保护的数据时执行。触发器主要通过事件进行触发而被执行,触发器不能直接调用执行,也不能被传送和接受参数,而存储过程可以通过存储过程名直接调用。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的概念触发器与表或视图名是不能分开的,触发器定义在一个表或视图名中,当在表或视图名中执行插入(INSERT)、修改(UPDATE)和删除(DELETE)操作时触发器被触发自动执行。当表或视图名被删除时与它关联的触发器也一同被删除。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大

5、学出版社比较触发器与约束 触发器的主要好处在于它们可以包含使用Transact-SQL代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社比较触发器与约束 实体完整性总应在最低级别上通过索引进行强制,这些索引或是PRIMARY KEY和UNIQUE约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过CHECK约束进行强制,而引用完整性(RI)则应通过FOREIGN KEY约束进行强制。电脑基础实例上机系列丛书SQL Server数据库应用教程

6、清华大学出版社比较触发器与约束 在约束所支持的功能无法满足应用程序的功能要求时,下列情况下触发器就极为有用:除非 REFERENCES 子句定义了级联引用操作,否则 FOREIGN KEY 约束只能以与另一列中的值完全匹配的值来验证列值。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社比较触发器与约束CHECK 约束只能根据逻辑表达式或同一表中的另一列来验证列值。如果应用程序要求根据另一个表中的列验证列值,则必须使用触发器。约束只能通过标准的系统错误信息传递错误信息。如果应用程序要求使用自定义信息和较为复杂的错误处理,则必须使用触发器。电脑基础实例上机系列丛书SQL S

7、erver数据库应用教程清华大学出版社比较触发器与约束触发器通过数据库中的相关表可实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。 触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。当更改外键且新值与主键不匹配时,此类触发器就可能发生作用。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社比较触发器与约束如果触发器表上存在约束,则在INSTEAD OF触发器执行后但在AFTER触发器执行前检查这些约束。如果约束破坏,则回滚INSTEAD OF触发器操作并且不执行AFTER触发器。电脑基础实例上机系列丛书SQL Server数据库应用教

8、程清华大学出版社使用触发器的优点 触发器有很多的优点,下面我们来一一讲解。触发器的优点如下。 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社使用触发器的优点 触发器可以强制比用CHECK约束定义的约束更为复杂的约束。 与CHECK约束不同,触发器可以引用其它表中的列。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社使用触发器的优点触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE或DELE

9、TE)允许采取多个不同的对策以响应同一个修改语句。 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的分类 SQL Server 2000提供了以下两种触发器选项,分别如下。执行INSTEAD OF触发器代替通常的触发动作。INSTEAD OF触发器还可在带有一个或多个基表的视图上定义,而在这些视图上这些触发器可扩展视图可支持的更新类型。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的分类 在执行了INSERT、UPDATE或DELETE语句操作之后执行AFTER触发器。指定AFTER与指定FOR相同,而后者是SQL Server早

10、期版本中唯一可使用的选项。AFTER触发器只能在表上指定。 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社AFTER 触发器和 INSTEAD OF 触发器比较 功能AFTER 触发器INSTEAD OF触发器适用范围表表和视图每个表或视图含触发器数量每个触发动作(UPDATE、DELETE 和 INSERT)含多个触发器每个触发动作(UPDATE、DELETE 和 INSERT)含一个触发器级联引用不应用任何限制在作为级联引用完整性约束目标的表上限制应用。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社AFTER 触发器和 INSTEAD O

11、F 触发器比较功能AFTER 触发器INSTEAD OF触发器执行晚于: 约束处理声明引用操作inserted 和 deleted 表的创建触发动作早于: 约束处理代替:触发动作晚于:inserted 和 deleted 表的创建电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社AFTER 触发器和 INSTEAD OF 触发器比较功能AFTER 触发器INSTEAD OF触发器执行顺序可指定第一个和最后一个执行不可用在inserted 和 deleted 表中引用 text、ntext 和 image 列不允许允许电脑基础实例上机系列丛书SQL Server数据库应用教

12、程清华大学出版社触发器的分类对于以上两个选项,触发器又可以分为INSERT触发器、DELETE触发器和UPDATE触发器3类。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的分类当向触发器表中插入数据时,INSERT触发器将触发执行,新的记录会增加到触发器表和INSERTED表中;当删除触发器表中的数据时,DELETE触发器将触发执行,被删除的记录会存放到DELETED表中; 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的分类当更新触发器表中的数据时,相当于插入一条新记录和删除一条旧记录,此时UPDATE触发器将触发执行,表中原

13、有的记录存放到DELETED表中,修改后的记录插入到INSERTED表中。 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的分类其中,INSERTED表和DELETED表是两个逻辑表,由系统来维护,不允许用户直接对这两个表进行修改。它们存放于内存中,不存放在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。这两个表主要用于在触发器以下操作中使用。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的分类扩展表间引用完整性。在以视图为基础的基表中插入或更新数据。检查错误并基于错误采取行动。找到数据修改前后表状态的差异,并基于此差

14、异采取行动。 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的分类具体来看:DELETED表用于存储DELETE和UPDATE语句所影响的行的复本。在执行DELETE或UPDATE语句时,行从触发器表中删除,并传输到DELETED表中。DELETED 表和触发器表通常没有相同的行。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的分类INSERTED表用于存储INSERT和UPDATE语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到INSERTED表和触发器表中。INSERTED表中的行是触发器表中新行的副本。电

15、脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器的分类更新事务类似于在删除之后执行插入;首先旧行被复制到DELETED表中,然后新行被复制到触发器表和INSERTED表中。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社创建和应用触发器 对触发器进行了解后,我们就可以开始创建以及应用触发器了。创建触发器 查看触发器的定义信息 禁用或启用触发器 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社创建触发器 下面讲解创建触发器的方法。用CREATE TRIGGER命令创建AFTER触发器 用CREATE TRIGGER命令创

16、建INSTEADE OF触发器 使用企业管理器创建触发器 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社用CREATE TRIGGER命令创建AFTER触发器 常用语法格式:CREATE TRIGGER触发器名ON 表名或视图名FOR DELETE,INSERT,UPDATEAS 触发器将要执行的SQL语句电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社用CREATE TRIGGER命令创建AFTER触发器【例10-1】 在readers(读者表)中创建一个名为“TrReaderDelete”的触发器,当要删除读者时,检查borrow(借书表)

17、中该书是否已经被借出,如果是则给出提示信息不允许删除该信息(光盘:源文件第10章例10-1)。 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社用CREATE TRIGGER命令创建INSTEADE OF触发器 常用语法格式:CREATE TRIGGER 触发器名ON 表名或视图名INSTEADE OF DELETE,INSERT,UPDATEAS 触发器将要执行的SQL语句电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社用CREATE TRIGGER命令创建INSTEADE OF触发器【例10-2】 在Books中创建一个名为“reminder

18、”的触发器,当要插入新的读者记录时,触发器被触发,然后使用触发语句来取代这个插入操作(光盘:源文件第10章例10-2)。当执行这条插入新记录语句的时候,被printhello所取代,最终并没有被执行。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社INSTEADE OF触发器 INSTEADE OF 触发器 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社使用企业管理器创建触发器 下面讲解在企业管理器中创建触发器的方法。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社查看触发器的定义信息 可以使用企业管理器和查询分析器来查

19、看触发器。使用企业管理器来查看触发器 使用查询分析器来察看触发器 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社使用企业管理器来查看触发器 查看触发器 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社使用查询分析器来察看触发器 查看触发器 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社禁用或启用触发器 语法:ALTER TABLE 表名 ENABLE | DISABLE TRIGGER ALL | 触发器名 , n 在使用触发器的时候,可以采用修改表的方式来启用或禁用触发器。电脑基础实例上机系列丛书SQL Server

20、数据库应用教程清华大学出版社禁用或启用触发器【例10-3】 启用或禁用readers(读者表)中“TrReaderDelete”触发器(光盘:源文件第10章例10-3)。-禁止-alter table readers disable trigger TrReaderDelete-启用-alter table readers enable trigger TrReaderDelete电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社修改和删除触发器 修改触发器 删除触发器 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社修改触发器 用企业管理器和Tr

21、ansaction-SQL命令,可以修改触发器。用“企业管理器”修改触发器正文 用ALTER TRIGGER命令修改触发器正文 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社用“企业管理器”修改触发器正文用企业管理器修改触发器正文的操作步骤与创建触发器相似,只需在“名称”下拉列表框中选择要修改的触发器即可。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社触发器属性 触发器属性 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社用ALTER TRIGGER命令修改触发器正文 命令格式为:ALTER TRIGGER 触发器名O

22、N 表名或视图名FOR DELETE,INSERT,UPDATEAS 触发器将要执行的SQL语句电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社删除触发器 用户可以删除不再需要的触发器,触发器所在的表以及表中的数据不受影响。如果删除表,则表中所有的触发器将被自动删除。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社删除触发器 一般用 DROP TRIGGER 删除触发器,除此之外,也可用“企业管理器”删除触发器的操作步骤与修改触发器相似, 在名称框中选择要删除的触发器后,单击按钮,即可删除该触发器。 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社修改触发器 修改触发器 电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社上 机 练 习 为Library数据库创建触发器:在借书时,将“Books”表的“是否借出”列置成1;在还书时,将“Books”的“是否借出”列置成0(光盘:源文件第10章上机练习)。电脑基础实例上机系列丛书SQL Server数据库应用教程清华大学出版社上 机 练 习分析:在读者借书时,将在Borrow表中插入记录;在还书时,将在Borrow表中删除该记录。

温馨提示

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

评论

0/150

提交评论