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语句执行和实现完整性约束条件或日志追踪等众多特性,可以有效确保数据的完整性和一致性,是管理数据库很有必要的存在。