SQL–07存储过程与触发器.pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  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文档。上传文档
查看更多
SQL–07存储过程与触发器

第7章 存储过程与触发器 本章内容: 存储过程 触发器 触发器类型 创建触发器 inserted和deleted临时表 7.2 触发器 7.2 触发器 7.2.1 触发器的创建 1、T-SQL创建触发器 1、T-SQL创建触发器 1、T-SQL创建触发器 2、触发器中的两个特殊表 3、应用举例 3、应用举例 3、应用举例 4、INSTEAD OF 触发器 4、INSTEAD OF 触发器 4、INSTEAD OF 触发器 5、对特定列的更改进行测试 5、对特定列的更改进行测试 5、对特定列的更改进行测试 触发器的管理 表设计举例 作 业 * * 触发器是一种特殊类型的存储过程,当在指定的表中使用INSERT、DELETE或UPDATE语句修改表中的数据时,SQL Server自动执行触发器,以响应INSERT、UPDATE或DELETE语句。 触发器与数据修改事件相关联,可分为三类: INSERT触发器:当向表中插入数据行时自动触发 DELETE触发器:当从表中删除数据行时自动触发 UPDATE触发器:当修改表中数据时自动触发 触发器常用来实现复杂的数据完整性。 例:XS和XS_KC之间的引用完整性、学分和总学分之间的关系。 … … … … … .. … … 15 王玉民 010003 30 程明 010002 40 王林 010001 总学分 姓名 学号 … … … … 70 90 80 成绩 3 106 010002 4 206 010001 3 106 010001 学分 课程号 学号 XS XS_KC 企业管理器创建触发器 1、选择表,右击鼠标,选择“所有任务”,单击“管理触发器”。 2、在“触发器属性”对话框中创建触发器。 T-SQL语句创建触发器 CREATE TRIGGER trigger_name ON { table | view } { { FOR|AFTER|INSTEAD OF} {[INSERT][,][DELETE][,] [UPDATE]} AS sql_statement [ ...n ] 说明: trigger_name:是触发器的名称。在数据库中必须唯一。 Table | view:是在其上执行触发器的表(称为触发器表)或视图。 AFTER:指定触发器只有在触发SQL语句中指定的所有操作都已成功执行后才激发。不能在视图上定义 AFTER 触发器。 INSTEAD OF:指定执行触发器而不是执行触发SQL语句,从而替代触发语句的操作。 { [DELETE] [,] [INSERT] [,] [UPDATE] }:指定触发器的类型,即指定在表或视图上执行哪些数据修改语句时将激活触发器。 sql_statement:定义触发器被触发后,将执行的操作。 例1:插入触发器 CREATE TRIGGER insert_trigger ON xs_kc for INSERT AS SELECT ‘insert into xs_kc表 GO 执行:insert xs_kc values(001101,106,80,3) 可看出:SELECT ‘insert into xs_kc表’ 已经执行 例2:插入触发器和更新触发器 CREATE TRIGGER update_trigger ON xs_kc for INSERT,UPDATE AS SELECT update on xs_kc GO insert into xs_kc values(010102,206,80,3) update xs_kc set 成绩=90 where 学号=010101 执行触发器时,系统自动创建两个特殊的临时表: inserted表:表结构同触发器表,用于存储INSERT和UPDATE 语句所影响的行的副本。 deleted表:表结构同触发器表,用于存储DELETE和UPDATE语句所影响的行的副本。 临时表中的数据由系统自动维护: 执行INSERT时,新建行被同时添加到inserted表和触发器表中。 执行DELETE时,行从触发器表中删除,并传输到deleted表中。 执行UPDATE时,从触发器表中删除旧行,并传输到deleted表中,新建行被添加到inserted表。 只能在触发器中访问临时表中的数据,且不能修改其内容。 例7.12 创建一触发器,当向xs_kc表中插入一行数据时,检查插入数据中的学号是否在xs表中存在,课程号是否在kc表中存在: CREATE TRIGGER check_trig ON xs_kc FOR INSERT AS IF EXISTS (SELECT * FROM inserte

文档评论(0)

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

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

1亿VIP精品文档

相关文档