深入了解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触发器,用户可以根据自己的需要使用不同的触发器来实现自动化,从而提高工作效率和降低可能出现的错误。