- 1、本文档共74页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
触发器 代俊义 esoft_djy@163.com 触发器的种类和触发事件 DML触发器 数据库事件触发器 DDL事件触发器 替代触发器 查看触发器 9.1 触发器的种类和触发事件 触发器必须由事件才能触发。触发器的触发事件分可为3类,分别是DML事件、DDL事件和数据库事件。 每类事件包含若干个事件,如表9-1所示。数据库的事件是具体的,在创建触发器时要指明触发的事件。 触发器的类型可划分为4种:数据操纵语言(DML)触发器、替代(INSTEAD OF)触发器、数据定义语言(DDL)触发器和数据库事件触发器。 各类触发器的作用如表9-2所示。 9.2 DML触发器 9.2.1 DML触发器的要点 DML触发器是定义在表上的触发器,由DML事件引发。编写DML触发器的要素是: * 确定触发的表,即在其上定义触发器的表。 * 确定触发的事件,DML触发器的触发事件有INSERT、UPDATE和DELETE三种,说明见表9-1。 * 确定触发时间。触发的时间有BEFORE和AFTER两种,分别表示触发动作发生在DML语句执行之前和语句执行之后。 * 确定触发级别,有语句级触发器和行级触发器两种。语句级触发器表示SQL语句只触发一次触发器,行级触发器表示SQL语句影响的每一行都要触发一次。 由于在同一个表上可以定义多个DML触发器,因此触发器本身和引发触发器的SQL语句在执行的顺序上有先后的关系。它们的顺序是: * 如果存在语句级BEFORE触发器,则先执行一次语句级BEFORE触发器。 * 在SQL语句的执行过程中,如果存在行级BEFORE触发器,则SQL语句在对每一行操作之前,都要先执行一次行级BEFORE触发器,然后才对行进行操作。如果存在行级AFTER触发器,则SQL语句在对每一行操作之后,都要再执行一次行级AFTER触发器。 * 如果存在语句级AFTER触发器,则在SQL语句执行完毕后,要最后执行一次语句级AFTER触发器。 DML触发器还有一些具体的问题,说明如下: * 如果有多个触发器被定义成为相同时间、相同事件触发,且最后定义的触发器是有效的,则最后定义的触发器被触发,其他触发器不执行。 * 一个触发器可由多个不同的DML操作触发。在触发器中,可用INSERTING、DELETING、UPDATING谓词来区别不同的DML操作。这些谓词可以在IF分支条件语句中作为判断条件来使用。 * 在行级触发器中,用:new 和:old(称为伪记录)来访问数据变更前后的值。但要注意,INSERT语句插入一条新记录,所以没有:old记录,而DELETE语句删除掉一条已经存在的记录,所以没有:new记录。UPDATE语句既有:old记录,也有:new记录,分别代表修改前后的记录。引用具体的某一列的值的方法是: :old.字段名或:new.字段名 * 触发器体内禁止使用COMMIT、ROLLBACK、SAVEPOINT语句,也禁止直接或间接地调用含有上述语句的存储过程。 定义一个触发器时要考虑上述多种情况,并根据具体的需要来决定触发器的种类。 9.2.2 DML触发器的创建 创建DML触发器需要CREATE TRIGGER系统权限。创建DML触发器的语法如下: CREATE [OR REPLACE] TRIGGER 触发器名 {BEFORE|AFTER|INSTEAD OF} 触发事件1 [OR 触发事件2...] ON 表名 WHEN 触发条件 [FOR EACH ROW] DECLARE 声明部分 BEGIN 主体部分 END; 其中: OR REPLACE:表示如果存在同名触发器,则覆盖原有同名触发器。 BEFORE、AFTER和INSTEAD OF:说明触发器的类型。 WHEN 触发条件:表示当该条件满足时,触发器才能执行。 触发事件:指INSERT、DELETE或UPDATE事件,事件可以并行出现,中间用OR连接。 对于UPDATE事件,还可以用以下形式表示对某些列的修改会引起触发器的动作: UPDATE OF 列名1,列名2... ON 表名:表示为哪一个表创建触发器。 FOR EACH ROW:表示触发器为行级触发器,省略则为语句级触发器。 触发器的创建者或具有DROP ANY TIRGGER系统权限的人才能删除触发器。删除触发器的语法如下: DROP TIRGGER 触发器名 可以通过命令设置触发器的可用状态,使其暂时关闭或重新打开,即当触发器暂时不用时,可以将其置成无效状态,在使用时重新打开。该命令
您可能关注的文档
- 阅读全文请下载pdf文档坚硬理论弹性规则.pdf
- 还原论及化学.pdf
- 农产品质量安全市场准入过程中利益相关者博弈分析.pdf
- 基于品质物料清单全面质量数字化管理模式研究.pdf
- 第二章第四节 隐函数与参数方程求导.ppt
- C语言课件 第3节_数据类型.ppt
- 万能数据库查询分析器中事务管理在Oracle中应用.doc
- 基于CAN2.0标准CAN-串转换通信技术研究.doc
- 宽带短波通信中快跳频OFDM系统的设计及实现.pdf
- 一种基于模型信息安全风险评估方法.pdf
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
最近下载
- 单向板肋梁楼盖计算.docx
- 作业4:工学一体化课程《小型网络安装与调试》工学一体化课程考核方案.docx VIP
- 中国画之写意画.ppt VIP
- (2019苏教)小学科学三年级上册:全册整套教案资料.pdf
- 核心素养导向的高中数学课例设计研究与实践(样例)(1).doc
- 驾驶证延期委托书模板.doc
- 作业5:工学一体化课程《小型网络安装与调试》工学一体化课程终结性考核试题.docx VIP
- 作业5:工学一体化课程《小型网络安装与调试》工学一体化课程终结性考核试题.pdf VIP
- 中国画的构图形式ppt课件.pptx
- 作业11:《小型网络安装与调试》工学一体化课程教学进度计划表.pdf VIP
文档评论(0)