- 16
- 0
- 约7.68千字
- 约 8页
- 2016-08-30 发布于浙江
- 举报
第6章 触发器
第6章 触发器
课程目标。
理解和应用触发器;
触发器是当特定事件出现时自动执行的代码块。触发器与过程的区别是,触发器是不能被直接调用的。而过程是由用户或应用程序显式调用的。
触发器与特定的表或视图关联,用于检查对表或视图所做的数据修改。无论正在执行操作的用户身份如何,触发器都能够在他们执行操作时生效。当insert、delete或update等事件发生在表或视图中时,就会激活触发器中的代码。
创建触发器的语法如下。
其中:
before和after:指在事件发生之前或之后激活触发器。
Instead of:表示可以执行触发器代码来代替触发器调用的事件。只用于视图。
Insert、delete、update:表示调用触发器代码的事件。
Referencing:指定新行(即将更新)和旧行(更新前)的其他名称。默认为NEW和OLD。
For each row:指定是否对受影响的每行都执行触发器。即行级触发器。如果不使用该子句,则为语句级触发器(不管影响多少行,包括零行)。
When:限制执行触发器的条件。
Declare …… end:是一个标准的PL/SQL块。
例一。演示如何在scott模式的emp表上创建触发器。
一、触发器的组成部分。
触发器由触发器语句、触发器限制和触发器操作3部分组成。
1、触发器语句。
触发器语句是哪些可以导致触发器的事件。如上例的第2、3、4行,就构成了触发器语句。也就是说,触发器在定义的事件之前就已经生成,当对emp表执行insert或对emp表的deptno执行update操作时,触发器将在受到影响的每一行上执行一次。但是,触发器是否真正执行还要检查触发器限制条件,只有满足限制条件才会执行。
2、触发器限制。
触发器限制条件包含一个布尔表达式,该值必须为真才能激活触发器。如果该值为“假”或“未知”,将不运行触发操作。如上例中的第5行。
3、触发器操作。
触发器操作是触发器的主体,包含一些sql语句和代码。如上例中的第6、7、8行。
二、触发器类型。
1、行级触发器
行级触发器对DML语句影响的每个行执行一次。如,update语句影响多行时,就会对每行都激活一次行触发器。行触发器是触发器中最常用的一种,通常用于数据库审计和实现复杂的业务逻辑。可以在create trigger命令中指定for each row子句创建行级触发器。
由于触发器是事件驱动的,因此可以设置触发器在这些事件之前或之后执行。即在执行DML语句之前或之后执行。在触发器中,可以引用DML语句中涉及的旧值或新值。“旧”是指在DML语句之前存在的数据。UPDATE和DELETE通常应用旧值。“新”是指由DML语句创建的数据值(如插入记录中的列)。
如果需要通过触发器在插入行中设置一个列值,就应该使用before insert触发器访问“新”值。使用after insert 触发器不允许设置插入值,因为该行已经插入表中。
例二。演示行级触发器的应用
从上例可以看出,表的id字段的值是由触发器自动产生的。使用了before insert。如果一个触发器由多种语句触发,可以使用inserting,updating,deleting条件谓词来检查,如上例中使用了inserting。条件谓词只能在触发器主体中引用。
2、语句级触发器。
语句级触发器对每个DML语句只执行一次。如果一条insert语句在表中插入200行,那么这个表上的insert语句级触发器只执行一次。语句级触发器不常用于与数据相关的活动,通常用于强制实施在表上执行操作的额外安全性措施。语句级触发器是create trgger命令创建的触发器的默认类型。
例三。演示如何创建语句级触发器。
3、instead of 触发器
instead of触发器是在视图上而不是在表上定义的触发器,它是用来替换所使用实际语句的触发器。Instead of 触发器只能在行级使用,不能在语句级使用。只能用于视图,不能用于表。
如果需要同时向两个表中插入值,可以通过使用instead of触发器来实现。
例四。演示了在表order_master 和order_detail上创建视图,以完成同时向两个表中插入值的操作。
上面代码创建了两个表的连接查询的视图。
要检查上述触发器是否触发正确,请在视图上给出insert语句并检查是否按所需要求更新或插入了行。
4、模式触发器
该触发器建立在用户模式上。只要该用户执
您可能关注的文档
最近下载
- 2025山东劳动职业技术学院单招《数学》通关题库含完整答案详解(夺冠系列).docx VIP
- 巴蜀中学2026届高三1月适应性月考卷(六)英语试卷(含答案解析).pdf
- 大数据技术及其在土木工程中的应用.doc VIP
- SI210 控制系统调试试运转.pdf VIP
- (第一届吉林大学天文知识竞赛预赛试题及答案.doc VIP
- 《大学物理简明教程》教学课件.pptx
- 2025年高考新高考全国Ⅰ卷英语试题(含听力音频、听力原文和答案).pdf VIP
- 2025年一级造价师《建设工程造价案例分析(交通运输)》考试真题(后附权威解析).pdf VIP
- 2025年山东劳动职业技术学院单招语文模拟试题(附答案解析) 完整版2025.pdf VIP
- 精品解析:重庆市南开中学校2024-2025学年九年级上学期期末考试数学试题(原卷版).docx VIP
原创力文档

文档评论(0)