第11章触发器

第11章触发器

ID:37780786

大小:162.50 KB

页数:13页

时间:2019-05-31

第11章触发器_第1页
第11章触发器_第2页
第11章触发器_第3页
第11章触发器_第4页
第11章触发器_第5页
资源描述:

《第11章触发器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第11章触发器第11章触发器ÿ本章学习目标严格地说,触发器也是一种特殊类型的存储过程,它与表的关系很密切,常用于保护表中的数据。本章主要内容包括触发器的概念、作用、类型,创建触发器的方法,如何对触发器进行管理等。通过本章的学习,读者应了解触发器的概念、作用、类型,熟悉利用存储过程和触发器维护数据完整性的方法,掌握创建和管理触发器的方法等。ÿ学习重点与难点þ触发器的概念、作用、类型等þ创建触发器的方法þ查看、修改和删除触发器的方法þ查看依赖关系u利用存储过程和触发器维护数据完整性的方法11.1触发器

2、概述学习和使用触发器,首先应对概念等有个详细的了解。本节就先来介绍有关触发器的概念、作用、类型等内容。11.1.1触发器的概念触发器(triegger)是一种特殊类型的存储过程,它与表紧密相连,可看作是表格定义的一部分。触发器是在特定表上进行定义的,该表也称为触发器表。触发器不能被显式地调用,当有操作针对触发器表时,例如在表中插入、删除、修改数据时,如果该表有相应操作类型的触发器,那么触发器就自动触发执行。使用触发器可实施更为复杂的数据完整性约束。触发器基于一个表创建,但是可以针对多个表进行操作,

3、所以触发器常被用来实现复杂的商业规则。例如,在pubs数据库中,存放着出版商(publishers)的信息,存放着出版物(titles)的信息,还存放着出版物与作者关联的信息(titleauthor)以及作者信息(authors)。现在,有一条出版商的信息被删除了,则所有由该出版商出版的出版物都应该将pu_id修改为NULL,或者删除有关的出版物信息。同样,titleauthor表中的信息也应该相应地得到修改。这种涉及到三张表的一致性维护问题,可以使用触发器来实现。在publishers表上设置一

4、个DELETE触发器,当删除一条publishers信息时,触发器自动执行,对titles表和publishers进行修改。在SQLServer中,一张表可以有多个触发器。用户可以针对INSERT、UPDATE或DELETE语句分别设置触发器,也可以针对一张表上的特定操作设置多个触发器。触发器里可以容纳非常复杂的T-SQL语句。但是,不管触发器所进行的操作有多复杂,触发器都只作为一个独立的单元被执行,被看作是一个事务。如果在执行触发器的过程中发生错误,则整个事务将会被自动回滚。触发器和存储过程也是

5、有区别的:存储过程是在数据库上定义的,而触发器是在特定表上进行定义的;存储过程可以由用户直接调用执行,但触发器不能直接调用执行,而是SQL233第11章触发器SERVER自动触发执行的。触发器不允许带参数。11.1.2触发器的作用使用触发器的最终目的是更好地维护企业的业务规则。在实际应用中,触发器主要提供以下功能:u级联修改数据库中的所有相关表,如上一节中所述。u撤消回滚违反引用完整性的操作,防止非法修改数据。u执行比检查约束更复杂的约束操作。u查找在数据库修改前后,表状态之间的差别,并根据差别来

6、分别采取相应的措施。u在一张表的同一类型的操作是设置多个触发器,从而可以针对同样的修改语句执行不同的多种操作。11.1.3触发器的类型SQLServer2000提供了两种触发器:INSTEADOF和AFTER触发器。这两种触发器的差别在于他们被激活的时机不同:uAFTER触发器在触发它们的语句完成后执行。AFTER触发器在约束检查之后执行,如果该语句因错误(如违反约束或语法错误)而失败,触发器将不会执行。不能为视图指定AFTER触发器,只能为表指定该触发器。可以为每个触发操作(INSERT、UPD

7、ATE或DELETE)指定多个AFTER触发器。如果表有多个AFTER触发器,可使用sp_settriggerorder定义哪个AFTER触发器最先激发,哪个最后激发。除第一个和最后一个触发器外,所有其它的AFTER触发器的激发顺序不确定,并且无法控制。在SQLServer2000中AFTER是默认触发器。不能在SQLServer7.0版或更早的版本中指定AFTER或INSTEADOF,这些版本中的所有触发器都作为AFTER触发器运行。uINSTEADOF触发器是SQLServer2000引进的一

8、种新的触发器类型,用于替代引起触发器执行的T-SQL语句。可在表和视图上指定INSTEADOF触发器。在SQLServer2000中,不能为每个触发操作(INSERT、UPDATE和DELETE)定义多个INSTEADOF触发器。INSTEADOF触发器在约束检查之前执行。11.1.4与触发器密切相关的两个专用表在使用触发器过程中,SQLServer使用到了两个特殊的临时表:inserted表和deleted表。这是两个逻辑表,由系统来维护,不允许用户直接对这两个表进行修改。这两张

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

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

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