数据库应用基础第八章触发器.pptVIP

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库应用基础第八章触发器

复习 1 如何执行存储过程? 2 变量的定义方法。 * 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 * * 第八章 触发器 * 8.1 触发器概述 8.2 创建触发器 8.3使用触发器 8.4 修改和删除触发器 主要内容: * 8.1.1触发器的基本概念 8.1触发器概述 数据库触发器是一种在基表做UPDATE、INSERT或DELETE操作时被修自动执行的内嵌过程,用来防止对数据进行的不正确或不一致的修改 * 通过触发器可以把事务规则从应用程序代码移到数据库中从而确保事务规则被遵守,并能显著提高性能 ,保证安全,并实现过程完整性。 * 类型: DDL(Data Definition Language)数据定义语言触发器 DML(Data Manipulation Language)数据操作语言触发器 * 8.1.2使用触发器的优点 1. 强制比CHCEK约束更复杂的数据完整性 在CHECK约束中不允许引用其他表中的列来完成检查工作,而触发器则可以引用其他表中的列来完成数据完整性的约束,如: 进出货.存货量定购量 * 2. 使用自定义的错误信息 用户有时需要在数据完整性遭到破坏或其他情况下,发出预先自定义好的错误信息或动态自定义的错误信息 * 3. 实现数据库中多张表的级联修改 在titleauthor、sales及roysched表中对各匹配行进行定位删除 title_id列 titles表 在title_id列上定义一个删除触发器 titleauthor表 sales表 roysched表 此三列均有title_id字段 * 4. 比较数据库修改前后数据的状态 用户可在触发器中引用由于修改所影响的记录行 触发器 提供 访问由INSERT、UPDATE或DELETE语句引起的数据变化的前后状态 * 5. 维护非规范化数据 非规范数据通常是指在表中的派生的、冗余的数据值 维护非规范化数据应该通过使用触发器来实现 表的级联是指不同表之间的主外键关系,维护表的级联可通过设置表的主键与外键的关系来实现 注意区别 * 8.2 创建触发器 CREATE TRIGGER [owner.]trigge_name ON [owner.]{table|view} {FOR|AFTER|INSTEAD OF} {[INSERT],[UPDATE],[DELETE]} 在触发SQL语句中指定的所有操作(引用级联操作和约束检查)成功完成后,执行此触发器 表示不执行其所定义的操作(INSERT、UPDATE、DELETE)而仅执行触发器本身 激发触发器的定时时间 * [WITH ENCRYPTION] AS IF UPDATE(column_name) [{and|or} UPDATE(column_name)…] sql_statesments 指定对标内某字段作增加或修改操作时触发器材起作用 定义触发器被触发后,将执行的数据库操作 * 8.2.1 INSERT触发器 例:在pubs库的authors表上创建 my_trigger1触发器,该触发器被操作INSERT所触发 USE pubs go CREATE TRIGGER my_trigger1 ON authors FOR INSERT AS raiserror(unauthorized,10,1) * 当向表authors插入数据时将触发触发器,但是数据仍能被插入表中 ?INSERT INTO authors values(‘172-33-1234,White,John,408496-7223,10932Bigge Rd.,Menlo Park,CA,94025, 1) 定义触发器时指定了FOR选项,AFTER为默认值,触发器只在INSERT中指定的操作都执行后才激发,因此仍能插

文档评论(0)

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

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

1亿VIP精品文档

相关文档