第10章 视图、存储过程和触发器B.ppt

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.3 触发器 10.3.1 触发器的概念   当有操作影响到触发器保护的数据时,触发器就自动发生.触发器是一种特殊类型的存储过程.   触发器有三种类型:INSERT类型、UPDATE类型和DELETE类型.   触发器可以建立在视图上.   虽然触发器只有3种类型,但是对于一个表来说,可以有许多触发器.   触发器最大的用途是维护行级数据的完整性,而不是返回结果.      当使用触发器时,可通过以下方法确保复杂的数据完整性: *执行操作或级联操作.如当级联删除或必须进行修改时,触发器确保相应的操作.   创建多行触发器.   定义定制的错误消息.   比较数据修改前和修改后的状态. *触发器在操作发生之后执行,约束是在操作发生之前起作用. *约束优于触发器检查.如果触发器与约束有冲突,那么就不执行触发器. *表可以有用于任意操作的多个触发器. *表的所有者必须有执行全部在触发器定义中的语句许可. *触发器不应该返回结果集. 10.3.2 创建触发器 创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft? SQL Server? 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。 语法 CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { ????{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } ????????[ WITH APPEND ] ????????[ NOT FOR REPLICATION ] ????????AS ????????[ { IF UPDATE ( column ) ????????????[ { AND | OR } UPDATE ( column ) ] ????????????????[ ...n ] ????????| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) ????????????????{ comparison_operator } column_bitmask [ ...n ] ????????} ] ????????sql_statement [ ...n ] ????} }   当创建触发器时,有关触发器的信息记录在sysobjects和syscommments系统表中.   同名的触发器将被覆盖.不能在系统表中创建触发器.   在触发器中,不能使用下列的语句: *所有的CREATE语句 *所有的DROP语句 *ALTER TABLE和ALTER DATABASE语句 *TRUNCATE TABLE ......   为了确定表的触发器,可以执行存储过程sp_depends tablename,例如: USE pubs GO EXEC sp_depends employee   查看触发器的定义,使用sp_helptext triggername,如: sp_helptext employee_insupd   为了确定触发器存在在何表上以及触发器的操作,可以执行系统存储过程sp_helptrigger tablename.如: EXEC sp_helptrigger employee 修改触发器使用ALTER TRIGGER语句. 删除触发器使用DROP TRIGGER语句.(不能使用企业管理器直接删除触发器) 10.3.3 触发器的工作原理 当INSERT触发时,新的记录分别增加到触发器表和内存中的inserted表中,触发器可以检查inserted表以确定是否应该执行和如何执行操作.在inserted表中的那些记录,总是触发器表中一行或多行记录的冗余. 当DELETE触发时,被删除的记录存放在一个特殊的deleted表中,该表允许参考原来的DELETE语句删除的已经记录在日志中的数据. 3.修改一条记录等于删除一条记录后再插入一条新记录,即UPDATE语句可以被看成为由一条DELETE语句和一条INSERT语句组成.   触发器可以嵌套.要禁止嵌套,可以使用sp_configure系统存储过程进行设置.但触发器不能自己调用自己.    * * 淘盯袒歼骑然候痒篇构强闰股暑加源马悲伊琐稽喊叭返瞅牌扁绕约匣上剑第10章 视图、存储过程和触发器B第10章 视图、存储过程和触发器B 涨刑燕钡晾舟蔡翼荷退淄蛾杠棺婆浑煞关蠕咳锌咒听教利背昔鄙梗钩撂胜第10章 视图、存储过程和触发器B第10章 视图、存储过程和触

文档评论(0)

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

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

1亿VIP精品文档

相关文档