深入了解Oracle数据库触发器类型(oracle触发器类型)

Oracle数据库的触发器可帮助用户根据某种触发条件实现自动响应,帮助用户更及时、更便捷地处理相关信息,Oracle数据库中的触发器有三种类型:

一、表触发器(Table Trigger)

表触发器可以声明在表或试图上,当用户对此表或视图进行数据操作变更时触发,也可以称为“DML触发器”,具有三种类型:

(1)无参表触发器:无法访问变更后的数据,只能根据表的初始状态做出反应。例如:

CREATE TRIGGER salary_table_trigger

BEFORE INSERT ON salary_table

FOR EACH ROW

BEGIN

SET NEW.amount_due = NEW.salary * 0.1;

END;

(2)行级表触发器:能够访问和操作每一行记录,可以修改新插入行,也可以将具体某些行执行特定动作。例如:

CREATE TRIGGER salary_table_trigger

AFTER INSERT ON salary_table

FOR EACH ROW

BEGIN

IF (NEW.region = ‘ North’) THEN

INSERT INTO salary_tab2 VALUES (NEW.emp_name, NEW.region);

ELSE

INSERT INTO salary_tab3 VALUES (NEW.emp_id, NEW.salary);

END IF;

END;

(3)工作表表触发器:可以访问每一行以及被触发动作相关的所有行记录,一次可以处理多行查询结果,可用于改变多行。例如:

CREATE TRIGGER salary_table_trigger

AFTER UPDATE OF salary_column ON salary_table

REFERENCING OLD as OLD ROW

FOR EACH ROW

BEGIN

UPDATE salary_table2 SET NEW.salary = OLD.salary*1.10;

END;

二、计时器触发器(Timer Trigger)

计时器触发器可以基于特定的时间来计划/调度特定程序,通过定义用户数据库、管理员任务或是数据库连接来执行,计时器触发器运行可能主要依赖于以下因素:

1、某个特定的精确时间:我们可以指定某个特定时间,精确到秒或毫秒,以便在某一刻触发;

2、某个特定间隔时间:例如每隔5小时定时任务被触发;

3、某个特定的时段:例如从每天8点~18点之间,每隔10分钟触发;

4、特定的重复周期:比如每个周一、周二的下午4点触发,以及每月的第25天的12点触发;

示例:

CREATE OR REPLACE TRIGGER timer_trigger

AFTER

EVERS 24 HOURS

ON SCHEDULED TIME

BEGIN

EXECUTE IMMEDIATE ‘update student set name=’hello”

END

三、DDL触发器(Data Definition Language Trigger)

DDL触发器是对数据库对象变动的监控和操作,DDL触发器可以用来纪录或实施数据库级的切换、修改或者删除的操作,例如:当创建表或修改表结构时。

CREATE OR REPLACE TRIGGER DDL_TRIGGER

AFTER DDL

BEGIN

EXECUTE IMMEDIATE ‘INSERT INTO Student(Name)values(“John”)’;

END;

总结

Oracle数据库的触发器提供了三种类型,分别为表类触发器、计时器触发器和DDL触发器,用户可以根据自己的需要使用不同的触发器来实现自动化,从而提高工作效率和降低可能出现的错误。


数据运维技术 » 深入了解Oracle数据库触发器类型(oracle触发器类型)