第09节 触发器.ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库技术与应用 第九章 触发器 * * * 例:在pubs库的authors表上建触发器member_trigger,它将被UPDATE操作激活,且不允许修改au_lname字段 USE pubs go CREATE TRIGGER member_trigger ON authors FOR UPDATE AS * 不使用INSTEAD OF而是通过rollback transaction子句恢复原来的数据的方法来实现字段不被修改 IF UPDATE(au_lname) BEGIN raiserror(Unauthorized!,10,1) rollback transaction END * 建好触发器后试着执行UPDATE操作 ? USE pubs go UPDATE authors SET au_lname=Wangti WHERE au_lname=White ? 运行结果显示:“Unauthorized!” * 在“查询分析器”中运行如下命令: USE pubs go SELECT au_lname FROM authors WHERE au_lname LIKE W% 查询结果中只有两行的White的内容,可见刚才的更新操作并不能实现对表中au_lname字段的更新 * UPDATE可对未建立保护性触发的字段进行更新而不激发触发器,例如: USE pubs go UPDATE authors SET au_fname=Wangti WHERE au_fname=Johnson 检索表authors可看到表内的信息被更新了,这是由于在au_fname字段上未建立UPDATE的触发 返回消息:“所影响的行数为 1 行” * Deleted表和 Inserted SQL Server为每个触发器都创建了两个专用表:INSERTED表和DELETED表。这两个逻辑表,由系统来维护。用户不能对它们进行修改。它们存放在内存中而不是数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行完成后,与该触发器相关的这两个表也被删除。 * INSERTED表 存放由于执行INSERT或UPDATE语句而要向表中插入的所有行。在执行INSERT或UPDATE操作时,新的行同时添加到激活触发器的表和INSERTD表中, INSERTD表的内容是激活触发器的表中新行的备份。 * DELETED表 存放由于执行DELETE或UPDATE语句而要从表中删除的所有行。在执行DELETE或UPDATE操作时,被删除的行从激活触发器的表中被移动到DELETED表,这两个表不会有共同的行。 * 9.2.4 查看触发器信息 象存储过程一样,触发器在创建后,系统把触发器的名称保存在系统表sysobjects中,并把创建的源代码保存在系统表syscomments中 * 1. 使用系统存储过程 EXEC sp_helptext triggername 例:使用sp_helptext 查看触发器delete_trigger的定义文本信息 USE pubs EXEC sp_helptext delete_trigger go * * 可以通过指定WITH ENCRYPTION来对触发器的定义文本信息进行加密,加密后的触发器无法用sp_helptext查看相关信息 还可使用系统存储过程sp_helptrigger来查看某特定表上存在的触发器的某些信息 ? EXEC sp_helptrigger tablename * 例:用系统存储过程sp_helptrigger 查看表authors上存在的所有触发器的相关信息 ? USE pubs EXEC sp_helptrigger authors go * * 2. 使用系统表 例:用系统表sysobjects查看数据库pubs上的所有触发器的相关信息 ? USE pubs SELECT name from sysobjects WHERE type=TR go * * * 本次课主要内容 第九章 触发器 9.1 触发器概述 9.2 创建触发器 9.3 使用触发器 9.4 修改删除触发器 * 9.3.1 使用触发器强制数据完整性 约束和触发器都可以用来实施数据完整性,但两者各有优势 触发器的可以包含使用 T-SQL 代码的复杂处理逻辑 触发器可以支持约束的所有功能 9.3使用触发器 * 实体完整性应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY和UNIQUE约束的一部分,或是在约束之外独立创建的 域完整性应通过CHECK约束来强制 引用完整性应通过FOREIGN KEY 约束来强制 * 以下应用场合应考虑使

文档评论(0)

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

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

1亿VIP精品文档

相关文档