第八章触发器1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 触发器 课程目标 触发器的类型 DML触发器 DDL触发器 触发器的类型 SQL Server 2005包括两大类触发器:DML触发器和DDL触发器。 DML触发器在数据库中发生数据操作语言(DML)事件时将启用。 DDL触发器是SQL Server 2005的新增功能。当服务器或数据库中发生数据定义语言(DDL)事件时将调用这些触发器。 1. DML触发器 当数据库中发生数据操作语言(DML)事件时将调用DML触发器。 DML事件包括在指定表或视图中修改数据的INSERT语句、UPDATE语句或DELETE语句。 当往某一个表格中插入记录、修改记录或删除记录时,SQL Server就会自动执行触发器发所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。 1. DML触发器 触发器和引起触发器执行的SQL语句被当作一次事务处理,如果这次事务未获得成功,SQL Server会自动返回该事务执行前的状态。和CHECK约束相比较,触发器可以强制实现更加复杂的数据完整性,而且可以参考其他表的字段。 1. DML触发器 DML触发器的主要优点如下: (1)DML触发器可通过数据库中的相关表实现级联更改。 (2)DML触发器可以防止恶意或错误的INSERT、UPDATE和DELETE操作,并强制执行比CHECK约束定义的限制更为复杂的其他限制。与CHECK约束不同,DML触发器可以引用其他表中的列。 (3)DML触发器可以评估数据修改前后表的状态,并根据该差异采取措施。 1. 1 DML触发器创建 在创建DML触发器之前应该考虑以下几个问题: (1)CREATE TRIGGER语句必须是批处理中的第一个语句。将该批处理中随后的其他所有语句解释为CREATE TRIGGER语句定义的一部分。 (2)创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。 (3)触发器为数据库对象,其名称必须遵循标识符的命名规则。 (4)虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。 1. 1 DML触发器创建 (5)虽然不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。 (6)在含有用DELETE或UPDATE操作定义的外键的表中,不能定义INSTEAD OF和INSTEAD OF UPDATE触发器。 (7)虽然TRUNCATE TABLE语句类似于没有WHERE子句(用于删除行)的DELETE语句,但它并不会引发DELETE触发器,因为TRUNCATE TABLE语句没有记录。 (8)WRITETEXT语句不会引发INSERT或UPDATE触发器。 1. 1 DML触发器创建 当创建一个触发器时,必须指定如下选项。 (1)名称; (2)在其上定义触发器的表; (3)触发器将何时激发; (4)激活触发器的数据修改语句,有效选项为INSERT、UPDATE或DELETE,多个数据修改语句可激活同一个触发器,例如,触发器可由INSERT或UPDATE语句激活; (5)执行触发操作的编程语句。 1. 1 DML触发器创建 DML触发器使用deleted和inserted逻辑表。它们在结构上和触发器所在的表的结构相同,SQL Server会自动创建和管理这些表。可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件。 1. 1 DML触发器创建 Deleted表用于存储delete、update语句所影响的行的副本。在执行deleted和update语句时,行从触发器表中删除,并传输到deleted表中。 Inserted表用于存储Insert 或update语句所影响的行的副本,在一个插入或更新事务处理中,新建的行被同时添加到Inserted表和触发器表中。Inserted表中的行是触发器表中新行的副本。 1. 1 DML触发器创建 在对具有触发器的表进行操作时,其操作过程如下。 执行insert操作,插入到触发器表中的新行被插入到inserted表中。 执行delete操作,从触发器表中删除的行被插入到deleted表中。 执行update操作,先从触发器表中删除旧行,然后再插入新行。其中,删除的旧行插入到deleted表中,插入的新行同时添加到inserted表中。 1. 1 DML触发器创建 使用SQL Server管理平台创建触发器的过程如下。 在SQL Server管理平台中,展开指定的服务器和数据库项,然后展开表,选择并展开要在其上创建触发器的表。右键单击触发器选项,从弹出的快捷菜单中选择“新建触发器”选项。 1. 1 DML触发器创建 会出现触发器创建窗口,编写相应SQL语句后,单击“执行”按钮,即

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档