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

SQLServer2000简明教程及课件sqlhwt10章节.ppt

SQLServer2000简明教程及课件sqlhwt10章节.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL Server--chap10--第十章 触发器及其应用 3. 用“企业管理器” 查看触发器 10.3.1 使用触发器强制数据完整性 约束和触发器都可以用来实施数据完整性,但两者各有优势 触发器的可以包含使用 T-SQL 代码的复杂处理逻辑 触发器可以支持约束的所有功能 实体完整性应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY和UNIQUE约束的一部分,或是在约束之外独立创建的 域完整性应通过CHECK约束来强制 引用完整性应通过FOREIGN KEY 约束来强制 以下应用场合应考虑使用触发器: 除非REFERENCES子句定义了级联引用操作,否则FOREIGN KEY约束只能以与另一列中的值完全匹配的值来验证列值 应用程序要求根据另一表中的列验证列值 应用程序要求使用自定义信息和较为复杂的错误处理 10.3.2 使用触发器强制业务规则 触发器在强制数据完整性之外,还可强制实施对CHECK约束来说过于复杂的业务规则,包括对其他表中行的状态进行检查 * 第十章 触发器及其应用 10.1.1触发器的基本概念 10.1触发器的基本概念和优点 数据库触发器是一种在基表被修改时自动执行的内嵌过程,当使用UPDATE、INSERT或DELETE命令在指定表中对数据进行修改时,用来防止对数据进行的不正确或不一致的修改 通过触发器可以把事务规则从应用程序代码移到数据库中从而确保事务规则被遵守,并能显著提高性能 10.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. 维护非规范化数据 非规范数据通常是指在表中的派生的、冗余的数据值 维护非规范化数据应该通过使用触发器来实现 表的级联是指不同表之间的主外键关系,维护表的级联可通过设置表的主键与外键的关系来实现 注意区别 10.2 触发器的创建 CREATE TRIGGER [owner.]trigge_name ON [owner.]{table|view} {FOR|AFTER|INSTEAD OF} {[INSERT],[UPDATE],[DELETE]} 在触发SQL语句中指定的操作、引用级联操作和约束检查成功完成后,执行此触发器 指定执行触发器而不是执行触发SQL语句,从而替代触发语句的操作 [WITH ENCRYPTION] AS IF UPDATE(column_name) [{and|or} UPDATE(column_name)…] sql_statesments 指定执行触发器而不是执行触发SQL语句,从而替代触发语句的操作 定义触发器被触发后,将执行的数据库操作 10.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中指定的操作都执行后才激发,因此仍能插入数据 有没有什么办法能实现触发器被执行的同时,取消触发触发器的SQL语句的操作呢? 用INSTEAD OF关键字来实现 例:在pubs库的authors表上创建触发器my_trigger2,它被操作DELETE所触发,且要求触发触发器的DELE

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档