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种类型及其特点的相关说明,表级触发器受到表操作触发, 系统级触发器绑定数据库,元数据触发器采用特殊操作触发;而递归触发器可在触发器之间存在多个触发链的情况下,实现可靠性和实时性。