- 1、本文档共259页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关系数据库标准语言SQL(最新)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 8.3 触发器triggers 触发器是一种特殊类型的存储过程,是现在DBMS中应用较多的一种数据库完整性保护措施。 触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用。 若某个关系上创建了触发器,则当用户对该关系有某种数据修改操作时,触发器会自动被激活并执行,因此,触发器又被称为主动完整性约束机制。 8.3 触发器 触发器的功能比一般完整性约束条件要强大,不仅可以给出提示信息,而且会引起系统内部自动进行某些操作,以消除违反完整性约束条件所引起的负面影响。 触发器可以用于 SQL Server 约束、默认值和规则的完整性检查。除了具有完整性保护以外,还具有安全保护功能。 创建触发器注意事项 ①CREATE TRIGGER语句必须是批处理中的第一个语句。 ②创建触发器的权限默认分配给表owner,且不能将该权限转给其他用户。 ③触发器为数据库对象,其名称必须遵循标识符的命名规则。 ④虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。 ⑤虽然不能在临时表或系统表上创建触发器,但其可以引用临时表。 ⑥ 创建一个触发器时必须指定:⑴名称;⑵在其上定义触发器的表;⑶触发器将何时激发;⑷激活触发器的数据修改语句。 关于inserted表和deleted表 Inserted表和deleted表是触发器专用的临时虚拟表,由系统负责维护,不允许用户对这两个表进行直接的修改。 Insertd表:存放insert或update语句执行过程中插入到触发表中的新数据行的副本。因此inserted表中的行与触发表中的新数据行相同。 Deleted表:存放delete或update语句执行过程中从触发表中删除的旧数据行的副本。因此deleted表和触发表不会有相同的行。 触发操作完成后,与触发器相关的表被自动删除掉。 触发器实例1 例:当用户update或insert记录到Reports中时,要求触发器自动更新Students中对应记录的credithours属性值。 Create trigger upd_grade on Reports For update,insert /*对R表执行update或insert操作时激活*/ As /*以下是触发器upd_grade激活后对Students的操作*/ update students set credithours= (select sum(credithours) from Courses where Cno in (select Cno from Reports where Grade=60 and Sno in (select Sno from INSERTED))) where Students.Sno in (select Sno from INSERTED) 触发器实例2 例:当用户从Reports表中删除记录中时,要求触发器自动更新Students中对应记录的credithours属性值。 Create trigger del_grade on Reports For delete /*对R表执行update或insert操作时激活*/ As /*以下是触发器upd_grade激活后对Students的操作*/ update students set credithours= (select sum(credithours) from Courses where Cno in (select Cno from Reports where Grade=60 and Sno in (select Sno from DELETED))) where Students.Sno in (s
您可能关注的文档
- 假如我是商务主管.ppt
- 假如给我三天光明之生活体验阅读欣赏.ppt
- 俱乐部的设置.ppt
- 做不完的保单【山东毛兆纳】.ppt
- 停止抱怨,让自己深沉点.pptx
- 信息获取与利用5.ppt
- 修改版 公开课-世界洋流 教学设计.ppt
- 做好旅行准备 - 新.ppt
- 偷吃参果闯大祸.pptx
- 做好旅行准备.pptx
- 白天晚上教学课件.ppt
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题参考答案详解.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题带答案详解.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及参考答案详解.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及参考答案详解一套.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及完整答案详解1套.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及参考答案详解1套.docx
- 2025年山东菏泽市事业单位招聘急需紧缺岗位目录(第一批)笔试模拟试题参考答案详解.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及答案详解1套.docx
- 画西瓜教学课件.ppt
文档评论(0)