存储储过程和触发器讲述.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
11.7 触发器综述 1、触发器概念 触发器是一种特殊类型的存储过程,不由用户直接调用,而且可以包含复杂的 SQL语句。它们主要用于强制复杂的业务规则或要求。触发器还有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。可以完成存储过程能完成的功能,但是它具有自己显著的的特点: 1)它与表紧密相连,可以看作表定义的一部分; 2)它不能通过名称被直接调用,更不允许带参数,而是当用户对表中的数据进行修改时,自动执行; 3)它可以用于SQL Server约束、默认值和规则的完整性检查,实施更为复杂的数据完整性约束。 11.7 触发器综述 2、触发器的优点 触发器包含复杂的处理逻辑,能够实现复杂的数据完整性约束。同其他约束相比,它主要有以下优点: 1)触发器自动执行 在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。 2)触发器能够对数据库中的相关表实现级联更改 触发器是基于一个表创建的,但是可以针对多个表进行操作,实现数据库中相关表的级联更改。例如,在学生数据库中,可以在产品表的产品编号字段上建立一个插入触发器,当对产品表增加记录时,在产品销售表的产品编号上自动插入编号值。 11.7 触发器综述 2、触发器的优点 3)触发器可以实现比CHECK约束更为复杂的数据完整性约束 在数据库中为了实现数据完整性约束,可以使用CHECK约束或触发器。CHECK约束不允许引用其它表中的列来完成检查工作,而触发器可以引用其它表中的列。例如,在STUDENT数据库中,向学生表中插入记录时,当输入系部代码时,必须先检查系部表中是否存在该系。这只能通过触发器实现,而不能通过CHECK约束完成。 4)触发器可以评估数据修改前后的表状态,并根据其差异采取对策。 5)一个表中可以存在多个同类触发器(INSERT、UPDATE或DELETE),对于同一个修改语句可以有多个不同的对策以响应。 11.7 触发器综述 3、触发器的种类 SQL Server 2005按触发被被激活的时机可以分为两种类型:AFTER 触发器和 INSTEAD OF触发器。 AFTER触发器又称为后触发器,该类触发器是在引起触发器执行的修改语句成功完成之后执行。如果修改语句因错误(如违反约束或语法错误)而失败,触发器将不会执行。此类触发器只能定义在表上,不能创建在视图上。可以为每个触发操作(INSERT、UPDATE或DELETE)创建多个AFTER触发器。 INSTEAD OF触发器又称为替代触发器,当引起触发器执行的修改语句停止执行时,该类触发器代替触发操作执行。该类触发器既可在表上定义,也可在视图上定义。对于每个触发操作(INSERT、UPDATE和DELETE)只能定义一个INSTEAD OF触发器。 11.8触发器的创建执行综述 在进行触发器的基本操作之前,介绍两张特殊的临时表,分别是inserted表和deleted表。这两张表都存在于高速缓存中。用户可以使用这两张临时表来检测某些修改操作所产生的效果。例如,可以使用SELECT 语句来检查INSERT和UPDATE语句执行的插入操作是否成功,触发器是否被这些语句触发等。但是不允许用户直接修改inserted表和deleted表中数据。 11.8触发器的创建执行 deleted表中存储着被DELETE和UPDATE语句影响的旧数据行。在执行DELETE和UPDATE语句过程中,指定的数据行被用户从基本表中删除,然后转移到了delete表中。一般来说,在基本表中delete表中不会存在有相同的数据行。 inserted表中存储着被INSERT 和UPDATE语句影响的新的数据行。当用户执行INSERT 和UPDATE语句时,新的数据行被添加到insert表中,同时这些数据行的备份被复制到inserted临时表中。 一个典型的UPDATE事务实际上是由两个操作组成。首先,旧的数据行从基本表中转移到delete表中,前提是这个过程没有出错;紧接着将新的数据行同时插入基本表和insert表。 11.8触发器的创建执行 1.触发器的基本操作__创建 在创建触发器前,必须注意以下几点: CREATE TRIGGER 语句必须是批处理中的第一条语句。 只能在当前数据库中创建触发器,名称必须遵循标识符的命名规则。 表的所有者具有创建触发器的默认权限,不能将该权限转给其他用户。 不能在临时表或系统表上创建触发器,但是触发器可以引用临时表,但是不能引用系统表。 尽管TRUNCATE TABLE 语句类似

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档