- 1、本文档共374页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 触 发 器7.1 触发器简介7.2 触发器的工作原理7.3 创建和管理触发器7.4 上机实验 习题 触发器是一种特殊类型的存储过程,它并不同于第6章中所介绍过的存储过程。触发器主要是通过事件自动触发而被执行的,而存储过程是通过存储过程名字来显式调用的。在以下各节中我们将对触发器的概念、功能以及使用方法作详细介绍。 本章学习目标: (1) 掌握创建、修改和删除触发器的方法。 (2) 充分理解触发器的工作原理以及inserted表和deleted表的使用方法。 (3) 能够灵活运用触发器来解决实际问题。 触发器实际上就是一种特殊类型的存储过程,它的特殊性就体现在:它是在执行某些特定的T-SQL语句时自动被触发而执行的,这些特定的T-SQL语句通常包括INSERT、DELETE 和UPDATE等。 7.1 触?发?器?简?介 1.触发器的主要功能 可以利用触发器来完成很多功能,常见的如下: (1) 对数据库进行强化约束,完成比约束更复杂的数据约束。 (2) 执行级联操作。触发器可以监视数据库内的操作,并自动地级联影响整个数据库的相关数据。 (3) 进行存储过程的嵌套调用。触发器本身就是一种存储过程,而存储过程是可以嵌套使用的,所以触发器也可以调用一个或多个存储过程。 2.触发器对数据库完整性的扩展 Microsoft SQL Server 2005 提供了两种主要机制来强制执行业务规则和数据完整性:约束和触发器。 约束和触发器在特殊情况下各有优点。触发器的主要优点在于它们可以包含使用 T-SQL代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但触发器对于给定的功能并不总是最好的方法。 实体完整性总应在最低级别上通过索引进行强制,这些索引应是PRIMARY KEY和UNIQUE约束的一部分,或者是独立于约束而创建的。域完整性应通过CHECK约束进行强制,而引用完整性(RI)则应通过FOREIGN KEY约束进行强制,假设这些约束的功能满足应用程序的功能需求。 3.触发器种类 SQL Server 2005包括两大类触发器:数据操作语言(Data Manipulation Language,DML)触发器和数据定义语言(Data Definition Language,DDL)触发器。 DML触发器在数据库中发生数据操作语言(DML)事件时将启用。DML事件包括在指定表或视图中修改数据的INSERT语句、UPDATE语句或DELETE语句。DML触发器可以查询其他表,还可以包含复杂的T-SQL语句。触发器和触发它的语句可作为在触发器内回滚的单个事务对待。如果检测到错误,则整个事务自动回滚。SQL Server 2005的DML触发器又可分为两类: (1) ?After触发器:这类触发器在记录已经改变完之后(after)才会被激活执行。 (2) ?Instead Of触发器:这类触发器一般用来取代原本的操作,在记录变更之前发生。 DDL触发器是SQL Server 2005的新增功能。当服务器或数据库中发生数据定义语言 (DDL)事件时将调用这些触发器。 在创建和使用触发器前,有必要先了解触发器的工作原理,而了解触发器工作原理的关键又在于了解两个特殊的表:inserted表和deleted表。这两个表是在运行触发器的时候临时被创建的,而且是驻留在数据库服务器的内存中的。它们是由系统管理的逻辑表,而不是真正存储在数据库中的物理表,其具有以下几个特点:7.2 触发器的工作原理 (1) 它们在结构上和触发器所在的表的结构相同。 (2) 它们只是临时驻留在内存里,当触发器的工作完成之后,这两个表也将会从内存中删除。 (3) 对于这两个表,用户只能够引用它们的数据,但没有修改的权限。 假设某个表在INSERT、DELETE和UPDATE语句上定义了触发器,那么下面分三种情况来讲解inserted表和deleted表中的记录。 当执行的是INSERT语句时,inserted表里存放的是要插入的记录,而deleted表中没有记录。 当执行的是DELETE语句时,deleted表里存放的是要删除的记录,而inserted表中没有记录。 当执行的是UPDATE语句时,可以将更新操作看成是有两个操作组成:首先将要更新的记录删除,然后再根据要更新的数据生成一条新记录插回表中,所以deleted表里存放的是更新前原来的记录,而inserted表里存放的是已被更新后的记录。 7.3.1 创建触发器的语法 创建触发器的语句是CREATE TRIGGER,具体语法如下: CREATE TRIGGER trigger_name ON { table | view } [ WITH dml_trigger_option [ ,
文档评论(0)