- 10
- 0
- 约6.12千字
- 约 5页
- 2017-06-07 发布于湖北
- 举报
Oracle 触发器的分类和使用
摘要:在 Oracle 中,触发器是一种特殊的存储过程,它在发生某种数据库事件时由Oracle
系统自动触发。触发器通常用于加强数据的完整性约束和业务规则等,对于表来说,触发器
可以实现比 CHECK 约束更为复杂的约束。本文介绍了 Oracle 触发器的概念,功能,优缺
点,组成等方面。详细解读了 Oracle 触发器在各方面的应用并配合相关实例。
关键字:Oracle、触发器、介绍、应用
一、触发器的介绍
1.1 触发器的概念
在 Oracle 中,触发器是一种特殊的存储过程,它在发生某种数据库事件时由 Oracle 系
统自动触发发器,通常用于加强数据的完整性约束和业务规则等。
触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是
不能被直接调用的,而是由一个事件来启动运行。即触发器是当某个时间发生时自动地隐式
运行。
1.2 触发器的功能
允许/限制对表的修改
自动生成派生列,比如自增字段
强制数据一致性
提供审计和日志记录
防止无效的事务处理
启用复杂的业务逻辑
1.3 触发器的优缺点
优点:触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约
束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的
约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一
个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定
义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中
的多个同类触发器(INSERT、UPDATE 或 DELETE )允许采取多个不同的对策以响应同一
个修改语句。
缺点:触发器功能强大,轻松可靠地实现许多复杂的功能,但是它也具有一些缺点那
就是由于我们的滥用会造成数据库及应用程序的维护困难。在数据库操作中,我们可以通过
关系、触发器、存储过程、应用程序等来实现数据操作。同时规则、约束、缺省值也是保证
数据完整性的重要保障。如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加
了维护的复杂程序。
1.4 触发器的组成
1
1. 触发事件:引起触发器被触发的事件。 例如:DML 语句(INSERT, UPDATE, DELETE
语句对表或视图执行数据处理操作) 、DDL 语句(如 CREATE、ALTER 、DROP 语句在数据
库中创建、修改、删除模式对象)、数据库系统事件(如系统启动或退出、异常错误)、用户
事件(如登录或退出数据库)。
2. 触发时间:即该 TRIGGER 是在触发事件发生之前(BEFORE )还是之后(AFTER)
触发,也就是触发事件和该 TRIGGER 的操作顺序。
3. 触发操作:即该 TRIGGER 被触发之后的目的和意图,正是触发器本身要做的事
情。 例如:PL/SQL 块。
4. 触发对象:包括表、视图、模式、数据库。只有在这些对象上发生了符合触发条
的触发事件,才会执行触发操作。
5. 触发条件:由 WHEN 子句指定一个逻辑表达式。只有当该表达式的值为 TRUE 时,
遇到触发事件才会自动执行触发器,使其执行触发操作。
6. 触发频率:说明触发器内定义的动作被执行的次数。即语句级(STATEMENT)触发
器和行级(ROW)触发器。
1.5 触发器触发次序
I. 执行 BEFORE 语句级触发器;
II. 对与受语句影响的每一行
执行 BEFORE 行级触发器
执行 DML 语句
执行 AFTER 行级触发器
I. 执行 AFTER 语句级触发器
二、触发器的种类
Oracle 中的触发器的类型主要有DML 触发器、替代触发器、系统事件触发器和 DDL
触发器。
2.1 DML 触发器
原创力文档

文档评论(0)