SQL 第8章 触发器.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL 第8章 触发器

2004-11-6 第12章 触发器 第8章 触发器的创建和使用 8.1.1 概述 8.1.2 触发器的创建 8.1.3 触发器实施数据完整性实例 8.1.4 查看、修改和删除触发器 8.1.5 使用触发器的注意事项 8.1.1 概述 8. 1. 1 触发器的概念及分类 触发器是一种特殊类型的存储过程,它不同于前面介绍过的一般的存储过程。 一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行 触发器是一个功能强大的工具,它与表格紧密相连,在表中数据发生变化时自动强制执行。触发器可以用于SQL Server约束、默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能。 触发器(Trigger)是一种实施复杂数据完整性的特殊存储过程. 在对表或视图执行 UPDATE、INSERT 或 DELETE 语句时自动触发执行,以防止对数据进行不正确、未授权或不一致的修改。 触发器是与表紧密联系在一起的,是在特定表上进行定义的,这个特定表也被称为触发器表。 触发器和一般的存储过程又有一些不同,它不可以像调用存储过程一样由用户直接调用执行。 触发器与表是密不可分的,触发器是不能离开表而独立存在的,触发器主要用于保护表中的数据,实现数据的完整性。 对表中数据的操作有三种基本类型,数据插入、修改、删除,因此,触发器也有三种类型:INSERT、UPDATE、DELETE。 当向触发器表中插入数据时,如果该触发器表有INSERT类型的触发器,INSERT触发器就被触发执行。同样的道理,UPDATE触发器会被数据更新触发执行、DELETE触发器会被数据删除触发执行。 8.1.2 触发器的工作原理 SQL Server为执行的触发器创建一个或两个专用的临时表:inserted表或者deleted表。 inserted表和deleted表的结构总是与被该触发器作用的表的结构相同,而且只能由创建它们的触发器引用。它们是临时的逻辑表,由系统来维护,不允许用户直接对它们进行修改。 它们存放于内存中,并不存放在数据库中。触发器工作完成后,与该触发器相关的这两个表也会被删除。 1. INSERT触发器的工作原理 当一个记录插入到表中时,INSERT触发器自动触发执行,相应的插入触发器创建一个inserted表,新的记录被增加到该触发器表和inserted表中。它允许用户参考初始的INSERT语句中的数据,触发器可以检查inserted表,以确定该触发器里的操作是否应该执行和如何执行。 2. DELETE触发器的工作原理 当从表中删除一条记录时,DELETE触发器自动触发执行,相应的删除触发器创建一个deleted表,deleted表是个逻辑表,用于保存已经从表中删除的记录,该deleted表允许用户参考原来的DELETE语句删除的已经记录在日志中的数据。应该注意:当被删除的记录放在deleted表中的时候,该记录就不会存在于数据库的表中了。因此,deleted表和数据库表之间没有共同的记录。 3. UPDATE触发器的工作原理 修改一条记录就等于插入一条新记录,删除一条旧记录。进行数据更新也可以看成由删除一条旧记录的DELETE语句和插入一条新记录的INSERT语句组成。当在某一个触发器表的上面修改一条记录时,UPDATE触发器自动触发执行,相应的更新触发器创建一个deleted表和inserted表,表中原来的记录移动到deleted表中,修改过的记录插入到了inserted表中。 8.1.2 触发器的创建 8.2.1 使用T-SQL语句创建触发器 1. 创建触发器的SQL语句语法: 创建触发器的一般语法如下。 CREATE TRIGGER trigger_name ON table_name [ WITH ENCRYPTION ] FOR {[DELETE][,][INSERT][,][UPDATE]} AS sql_statement ● trigger_name :要创建的触发器名称。触发器名称必须符合标识符规则,并且在数据库中必须唯一。 ● table_name :指定所创建的触发器与之相关联的表名。必须是一个现存的表。 ● WITH ENCRYPTION :加密创建触发器的文本。 ● FOR {[INSERT] [,][DELETE] [,][UPDATE]} :指定所创建的触发器将在发生哪些事件时被触发,也即指定创建触发器的类型。“INSERT”,表示创建插入触发器;“DELETE”,表示创建删除触发器;“UPDATE” 表示创建更新触发器。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,以逗号分隔这些选

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档