学习Oracle的触发器类型分类(oracle触发器类型)
Oracle触发器是Oracle数据库中的一种数据库对象,它可以在特定的条件发生时自动完成一定的任务,可以保证数据库的正常运行,当在Oracle系统中执行某些DML(数据操作语言)语句时会自动被触发。Oracle触发器分为3种,分别是表级触发器、行级触发器和数据库触发器。
1、表级触发器:表级触发器在表上配置,当在表上执行 insert,update与 delete操作时其配置的触发器就会自动生效,如下:
CREATE OR REPLACE TRIGGER Trg_Employee
BEFORE INSERT OR DELETE OR UPDATE ON Employee
FOR EACH ROW
BEGIN
IF INSERTING THEN
BEGIN
…
END;
ELSIF DELETING THEN
BEGIN
…
END;
ELSIF UPDATING THEN
BEGIN
…
END;
END IF;
END;
/
2、行级触发器:行级触发器可以定义在表的某一列上,当对表的该列进行更新操作时,可以引发该行级触发器,即在更新指定字段时或者更新时满足某些限制条件时,可以自动运行函数完成更新,如下:
CREATE OR REPLACE TRIGGER Trg_Employee_on_Salary
AFTER UPDATE OF salary ON Employee
FOR EACH ROW
BEGIN
IF :new.salary > :old.salary THEN
BEGIN
…
END;
END IF;
END;
/
3、数据库触发器:数据库触发器不管何时,只要有对数据库的变动,就会触发,并执行相应的操作,系统定义的数据库触发器名为 system trigger,如下:
CREATE OR REPLACE TRIGGER Trg_Database
AFTER STARTUP
ON DATABASE
BEGIN
…
END;
/
总而言之,Oracle触发器有三种类型:表级触发器、行级触发器和数据库触发器。表级触发器以及行级触发器在特定的insert、update或delete操作发生时都会被触发,而数据库触发器只能响应服务器的启动、停止和关闭等全局事件,从而实现完成特定的工作。学习Oracle的触发器类型分类非常重要,了解这些类型的区别也是Oracle数据库应用的重要内容。