Oracle触发器:分类及其特性(oracle触发器类型)

Oracle触发器是一种在定义或更改表行时,按照用户事先指定的程序执行的数据库操作,属于数据库的访问控制机制。Oracle触发器分为DML触发器和DDL触发器,各自都有所不同的作用及特性。

一、DML触发器

DML触发器是在DML语句(INSERT、DELETE、UPDATE)执行之前或之后就自动触发的,控制DML语句执行。DML触发器可以定义在表或表的列上,也可以级联在一起,一般用于实现完整性约束条件或日志追踪等目的,包括行级触发器,和表级触发器。下面是常用的行级触发器代码:

CREATE OR REPLACE TRIGGER 触发器名称

AFTER DELETE OR INSERT OR UPDATE

ON 表名

FOR EACH ROW

BEGIN

— 对应的MYSQL的操作

END;

二、DDL触发器

DDL触发器跟DML触发器类似,只是发生的是DDL(数据定义语句)操作,而DDL操作是数据库对象的元数据操作,同样的一般情况下,DDL触发器只会存在于Schem里,如果想进一步实现一些把用户操作轨迹记录下来,再保存到表里的类似功能,可以再在DDL触发器里定义一些操作,如下代码:

CREATE OR REPLACE TRIGGER 触发器名称

AFTER DDL OR DML

ON SCHEMA

BEGIN

— 判断是哪一种操作

IF ORACLE_DICTIONARY.LAST_DDL_TYPE = ‘CREATE’ THEN

— 执行增加的操作

ELSIF ORACLE_DICTIONARY.LAST_DDL_TYPE = ‘ALTER’ THEN

— 执行修改的操作

ELSIF ORACLE_DICTIONARY.LAST_DDL_TYPE = ‘DROP’ THEN

— 执行删除的操作

END IF;

END;

总之,Oracle触发器具有控制DML语句执行和实现完整性约束条件或日志追踪等众多特性,可以有效确保数据的完整性和一致性,是管理数据库很有必要的存在。


数据运维技术 » Oracle触发器:分类及其特性(oracle触发器类型)