深入理解Oracle触发器类型(oracle触发器类型)

Oracle触发器是基于数据库表的特定操作来自动执行的一种特定的处理机制,具有自动响应数据库改变的优势,并且可以实现约束检查,以及管理更新,插入,删除操作等。通常分为三种类型,分别是行级触发器,表级触发器和数据库事件触发器。

行级触发器又称为行触发器,是表的每一行的增删改操作引发执行的动作,其定义由 Oracle 的 BEFORE(或AFTER)及INSERT(或UPDATE或DELETE)句来描述。为了提升数据库性能,Oracle 9i下行级触发器实现了数据库事务之间的隔离性,而且可以对于一条INSERT,UPDATE和DELETE语句多个行级触发同时触发。

表级触发器又称为表触发器,是表的一般操作改变条件时触发并执行某一特定动作,表级触发器正是建立在表或视图级别上的,而不是某一行上,必须定义在存储表数据的表上,且无法定义在视图上,而且磁盘上的行不会触发表触发器。

数据库事件触发器又称为库触发器,是一种特殊的触发器,它与其它触发器的最大区别是可以触发数据库级别的事件,比如一条或多条DML语句在执行后,该触发器就可以被触发执行了。可以看出,它在一定程度上解决了一些表触发器所不能实现的功能。

以上是Oracle触发器三种类型的基本介绍,以下是一段简单用例实现行级触发器 (row trigger) 的代码:

创建表:

CREATE TABLE test_table
(
ID VARCHAR2(20 BYTE),
NAME VARCHAR2(32 BYTE)
);

创建触发器:

CREATE OR REPLACE TRIGGER row_trigger
BEFORE INSERT ON test_table
FOR EACH ROW
DECLARE
BEGIN
DBMS_OUTPUT.put_line('The trigger is running!');
END;
/

加入数据:

INSERT INTO test_table (ID, NAME) VALUES ('001', 'John');

当执行上面这条语句,就会激活row_trigger触发器,它就会先执行里面定义的处理程序,以上代码中就打出了一句 “The trigger is running!”。

由此可见, Oracle 触发器的类型提供了很多灵活的操作,可以满足复杂的查询需求,并可以应用到表,行及数据库级别上。不论是对某一特定操作的作用,还是复杂的约束检查,都可以由相应的 Oracle 触发器来实现,只要选择合适的类型就可以实现复杂的功能需求。


数据运维技术 » 深入理解Oracle触发器类型(oracle触发器类型)