Oracle 数据库触发器的类型及其应用(oracle触发器类型)
Oracle数据库触发器是一种特殊的存储过程,它可以在用户更新表或表视图后立即触发,从而实现定义的动作。Oracle 允许不同的类型的数据库触发器,无论是在表层次,也可以定义在数据库级别,主要有三种:表触发器、字典触发器和事件触发器。
表层触发器是最常见的触发器类型,它可以在表的UPDATE、INSERT和DELETE上触发,从而实现定义的动作,它可以完成复杂的业务流程。例如,当用户插入数据时,可以定义触发器将自动插入到另一个表中;或者当用户删除记录时,可以定义触发器将相应的其他记录也一起删除。我们可以使用下面的 SQL 语句来创建一个表触发器:
CREATE OR REPLACE TRIGGER tb_trigger AFTER
INSERT OR UPDATE OR DELETE ON tablename FOR EACH ROW
BEGIN
IF INSERTING THEN
— perform action on inserting
ELSIF UPDATING THEN
— perform action on updating
ELSIF DELETING THEN
— perform action on deleting
END IF;
END;
/
字典触发器是特殊的触发器,它是在数据库层次触发,字典触发器监控元数据变化,捕获变化后生成事件,比如表创建、删除更新等,Oracle提供一个叫做DBMS_METADATA.GET_DDL你可以用它来创建字典触发器:
CREATE OR REPLACE TRIGGER my_trigger
AFTER CREATE OR ALTER OR DROP
ON SCHEMA
BEGIN
DBMS_METADATA.GET_DDL(‘TABLE’, ‘mytable’)
END ;
/
事件触发器是另一种特殊的触发器,它可以基于数据库的系统事件来触发,比如定时任务、登录和注销数据库等,Oracle提供的EVENT的触发器可以实现定时任务,其用法和上面类似:
CREATE OR REPLACE TRIGGER my_trigger
AFTER SCHEDULE
BEGIN
execute immediate ‘select sysdate from dual’;
END ;
/
从上面所介绍的三种触发器类型可以看出,Oracle数据库触发器是一种非常强大的特性,可以帮助我们在数据库级别上对业务进行自动化,实现自动审核,自动判断,自动审计,自动管理等。Oracle 数据库触发器通过捕获变化后生成事件,在触发时可以执行定义的SQL语句,达到自动化的实现。