单元29:触发器解读.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单元29:触发器 问题引入 问题:如果学校要求:每位教师1学期任教科目不得超过2门、任教总课时不得超过300,如何实现该要求? 问题引入 完全可以插入,因为 不存在主键冲突 不存在外键冲突(假设班级、课程、教师都存在) 因此,一般的约束达不到这种限制要求(企业逻辑或企业规则) 触发器——可以实现这种强制性业务规则 1. 1 触发器的概念 触发器分为DML(数据操作语言)触发器和DDL(数据定义语言)触发器。 DML触发器用于响应数据库数据操作(INSERT、UPDATE、DELETE)事件,建立在数据库对象(表、视图)上。 DDL触发器用于响应各种数据定义语言事件(CREATE、ALTER、DROP),建立在服务器或数据库上。 触发器必须依赖于某个对象,不允许带参数,也不允许被调用。 1. 2 DML触发器的原理 DML触发器都会创建两个专用临时表: INSERTED表——存放执行INSERT或UPDATE语句而需要向表中插入的记录。 DELETED表——存放执行DELETE或UPDATE语句而需要从表中删除的记录。 这两个表的结构和触发器作用的表结构完全相同 触发器执行完成后,这两个表也会删除 1. 2 DML触发器的作用 (1)多张表的级联修改。 (2)强于CHECK的复杂限制。 (3)比较数据修改前后的差别。 (4)强制表的修改要合乎业务规则。 2.1 创建DML触发器 2.1 创建DML触发器 【例】创建触发器,禁止修改学生表的主键列 2.1 创建DML触发器 验证该触发器 2.1 创建DML触发器 【例】创建触发器,如果向学生表中插入了一条记录,则给出一个消息。 2.1 创建DML触发器 【例】创建触发器,在timetable表中完成如下限制:每位教师每个学期任教科目不得超过2门。 2.1 创建DML触发器 2.1 创建DML触发器 DML触发器分为后触发(AFTER)和替代触发(INSTEAD OF) 替代触发器由INSERT、UPDATE、DELETE动作激活,但不执行该动作,记录的插入、更新、删除由触发器语句完成。 例:创建替代触发器,当在部门表(Department)插入记录时,触发器保证插入记录的departID字段值为部门表中最大departID值加1 2.1 创建DML触发器 2.2 创建DDL触发器 例:在chgl数据库上创建触发器,禁止修改表和创建表 3. 修改和删除触发器 查看触发器的定义信息——SP_HELPTEXT 触发器名称 修改触发器——ALTER TRIGGER语句修改 删除触发器——通过DROP TRIGGER 命令实现。 禁止或启用触发器——ALTER TABLE 表名 {ENABLE|DISABLE} TRIGGER {ALL|触发器名[,...n]} 或者 {ENABLE|DISABLE} TRIGGER {触发器名} ON 对象名(表) 例:ALTER TABLE student DISABLE TRIG1 2.3 事务的概念 事务是作为单个逻辑工作单元执行的一系列操作。这一系列的操作或者都被执行,或者都不被执行。 事务作为一个逻辑工作单元有4个属性,称为ACID,即 原子性——要么全执行,要么全不执行 一致性——事务完成时,所有的数据都要保持一致状态。 隔离性——事务所作的修改要和其他并发事务所作的修改隔离开。 持久性 ——事务对系统的影响是永久性的。 2.4 事务的概念 SQL Server有以下3种事务模式: (1)自动提交事务——每个单独的SQL语句都是一个事务,不必指定任何语句控制事务 (2)显式事务——每个事务均以BEGIN TRANSACTION显式开始,以COMMIT或 ROLLBACK语句显式结束。 (3)隐性事务——通过API函数或 SET IMPLICIT_TRANSACTIONS ON命令将隐性事务打开,这样前一个事务结束时新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK语句显式结束。 1 04007 206 0804002001 1 04007 205 0804002001 term teacherID courseID classID 若要向该表插入如下记录,能否成功? (0804002001,207,04007,1) 触发器的概念 1. 2. 创建和应用触发器 主要内容 修改和删除触发器 3. 触发器的工作原理 执行INSERT, UPDATE,DELETE 生成临时表: Inserted和Deleted 该表设置了触发器 将数据送入Inserted 或Deleted表 是否合乎 事务处理? 执行相关操作, 自动删除临时表 Y N 给出提示, 执行不成功 系统先检查数据的正确性,如果正确才执行触发器的定义代码

文档评论(0)

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

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

1亿VIP精品文档

相关文档