网站大量收购独家精品文档,联系QQ:2885784924

存储过程与触发器详解.ppt

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

6.2.1 触发器的特点和类型 触发器(trigger) 是SQL Server数据库中一种特殊类型的存储过程,不能由用户直接调用,而且可以包含复杂的T-SQL语句。它是一个在修改指定表中的数据时执行的存储过程。用户可以用它来强制实施复杂的业务规则,以此确保数据的完整性。 * 6.2.1 触发器的特点和类型 触发器的特点 触发器与表紧密相连,可以看作表定义的一部分。 触发器是基于一个表创建的,但是可以针对多个表进行操作,实现数据库中相关表的级联更改。 触发器不能通过名称被直接调用,更不允许带参数,而是当用户对表中的数据进行修改这样的事件发生时,自动执行的行为。 触发器可以用于SQL Server约束、默认值和规则的完整性检查,实施更为复杂的数据完整性约束。 触发器可以评估数据修改前后的表状态,并根据其差异采取对策。 一个表中可以存在多个同类触发器(INSERT、UPDATE或DELETE),对于同一个修改语句可以有多个不同的对策用以响应。 * 6.2.1 触发器的特点和类型 触发器的类型 按触发事件不同分为2类 (1)DDL(数据定义语言)触发器 是指当服务器或数据库中发生DDL事件时将启用。DDL事件即指在表或索引中的create、alter、drop语句。 (2)DML( 数据操纵语言 )触发器 是指触发器在数据库中发生DML事件时将启用。DML事件即指在表或视图中修改数据的insert、update、delete语句。因此DML触发器也可分为3种类型: INSERT触发器、UPDATE触发器、DELETE触发器。 * 6.2.1 触发器的特点和类型 触发器的类型 按触发器被激活的时机可以分为以下两种类型: (1)AFTER触发器(后触发器) 是在触发动作之后再触动,可视为控制触发器激活时间的机制。在引起触发器执行的更新语句成功完成之后执行。如果更新语句因错误(如违反约束或语法错误)而失败,触发器将不会执行。 此类触发器只能定义在表上,不能创建在视图上。可以为每个触发操作(如INSERT、UPDATE或DELETE)创建多个AFTER触发器。 (2)INSTEAD OF触发器(替代触发器) 将在数据变动以前被触发,该类触发器代替触发操作被执行。 该类触发器既可在表上定义,也可在视图上定义。对于每个触发操作(INSERT、UPDATE和DELETE)只能定义1个INSTEAD OF触发器。 * 6.2.2 触发器的创建 与触发器相关的虚拟表 在触发器执行的时候,系统产生两个临时表:inserted 表和deleted 表。 (1)inserted表 存储着被INSERT和UPDATE语句影响的新的数据记录。当用户执行INSERT和UPDATE语句时,新数据记录的备份被复制到inserted临时表中。 (2)deleted表 存储着被DELETE和UPDATE语句影响的旧数据记录。在执行DELETE和UPDATE语句过程中,指定的旧数据记录被用户从基本表中删除,然后转移到delete表中。 * 6.2.2 触发器的创建 创建触发器主要有T-SQL语句和对象资源管理器等方式。 1.使用CREATE TRIGGER语句创建触发器 语法格式: CREATE TRIGGER [schema_name.] trigger_name ON { table_name|view_name } [ WITH ENCRYPTION ] { FOR | AFTER | INSTEAD OF } { [DELETE][,][INSERT][,][UPDATE] } AS sql_statement [,...n ] 例: CREATE TRIGGET trig_stu ON Student AFTER INSERT, DELETE, UPDATE AS SELECT * FROM student * 创建触发器必须指定的选项: 名称; 在其上定义触发器的表; 触发器将何时激发; 激活触发器的数据修改语句; 执行触发操作的编程语句; 对CREATE TRIGGER 语句的文本加密。 6.2.2 触发器的创建 创建触发器注意事项: (1)CREATE TRIGGER语句必须是批处理中的第一条语句。 (2)只能在当前数据库中创建触发器,一个触发器只能对应一个表。 (3)表的所有者具有创建触发器的默认权限,不能将该权限转给其他用户。 (4)不能在视图、临时表、系统表上创建触发器,但是触发器可以引用视图、临时表,但是不能引用系统表。 (5)尽管TRUNCA

文档评论(0)

风凰传奇 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档