Oracle触发器的4种类型及其特点(oracle触发器类型)

Oracle触发器是用于自动执行数据库表的SQL表达式的对象,可以在数据库发生变化时自动执行相应的SQL表达式。Oracle触发器有四种类型,分别是表级触发器、系统级触发器、元数据触发器和递归触发器。下面我们就分别了解下这几种触发器的特点:

(1)表级触发器

表级触发器是绑定表的触发器,它们可以受到数据库表上的某种操作的触发,并进行相应的表达式操作。如下是创建一个表级触发器的例子:

CREATE OR REPLACE TRIGGER creat_trigger 
AFTER INSERT ON product
FOR EACH ROW
BEGIN
insert into history_table values(:new.price);
END;

(2)系统级触发器

系统级触发器是绑定数据库的触发器,当某种数据库的操作发生改变时,它就会触发相应的触发器,以实现特殊的数据库操作。下面是一个创建系统级触发器的例子:

“`

CREATE OR REPLACE TRIGGER system_trigger

AFTER LOGOFF ON DATABASE

BEGIN

insert into log_table values (‘logoff’);

END;


(3)元数据触发器
元数据触发器针对数据库结构的变更,它是系统级触发器的一种特殊的触发器,可以让这种特殊的操作触发特定的SQL表达式操作;这样就可以实现创建表、删除表等操作。下面是一个创建元数据触发器的例子:

CREATE OR REPLACE TRIGGER create_table_trigger

AFTER CREATE ON SCHEMA

BEGIN

insert into log_table values (‘table created’);

END;


(4)递归触发器
递归触发器会多次触发同一张表,它是用于触发器之间存在多个触发链上时,防止这些触发事件之间相互影响,从而实现可靠性和实时性;例如,可以通过设置递归触发器,来实现一种数据的转换,无论需要多次调整,它都不会被触发多次。下面是一个创建递归触发器的例子:

CREATE TRIGGER recursive_trigger

AFTER UPDATE ON product

FOR EACH ROW

REFERENCING NEW AS new OLD AS old

CALLRECURSIVE

BEGIN

update product set price = old.price * 0.8;

END;


以上就是Oracle触发器4种类型及其特点的相关说明,表级触发器受到表操作触发, 系统级触发器绑定数据库,元数据触发器采用特殊操作触发;而递归触发器可在触发器之间存在多个触发链的情况下,实现可靠性和实时性。

数据运维技术 » Oracle触发器的4种类型及其特点(oracle触发器类型)