Oracle 触发器:类型总览(oracle触发器类型)

如果要对数据库进行正确的操作并正确的实现许多操作,我们就需要触发器(Triggers)了。Oracle 数据库中的触发器(Triggers)可以简化数据库开发和管理,当设置完毕之后,在预定条件被满足时,它可以自动完成预定义的操作,所以在 Oracle 中不仅支持常见的 select,insert,update 操作,还支持触发器。

Oracle 触发器分为以下几种:

– 表触发器(Table Trigger)

表触发器可以挂钩在表上,它会在有对表的 CRUD 操作发生时触发,它的执行时机分为前触发和后触发,前触发是在表的操作之前触发,而后触发则是在表操作之后触发。

下面是一个用于监控表 emp 表更新后的触发器:

CREATE OR REPLACE TRIGGER trg_emp_update    
AFTER UPDATE ON emp
FOR EACH ROW
BEGIN
INSERT INTO emp_history(emp_ID, old_name)
VALUES (: OLD.emp_ID, : OLD.NAME);
END;
/

– 视图触发器(View Trigger)

视图触发器可以挂钩在视图上,它依然会在有对表的操作发生时触发,但是它更多的是为了更新裸表和其他视图之间的关系,这个触发器没有表触发器灵活而且复杂,所以它仅仅可以应用在视图上,它只能响应查询语句,不能响应 DML 和 DDL 语句。

下面是一个示例,示例中的视图触发器监控在向视图 View_emp 进行操作时的操作:

CREATE OR REPLACE TRIGGER trg_view_emp 
ON VIEW_EMP
INSTEAD OF INSERT
BEGIN
INSERT INTO EMP(EMP_ID, NAME)
VALUES (: NEW.EMP_ID, : NEW.NAME);
END;
/

-功能触发器(Function Trigger)

功能触发器是 Oracle 提供的新特性,它能够在数据库中的触发器和存储过程响应操作发生时被调用,它是在前触发或后触发前立即被调用的,它的用途主要解决触发器和存储过程之间相互调用的问题。

下面是一个示例,示例中的功能触发器监控 DEPT_TRIG 函数:

CREATE OR REPLACE TRIGGER trg_dept_trig 
BEFORE CALL ON dept_trig
BEGIN
UPDATE dept
SET dept_name = :dept_name
WHERE dept_no = :dept_no;
END;
/

触发器在 Oracle 数据库中有着重要的作用,以上就是 Oracle 中几种类型的触发器,以及相关介绍和案例,大家可以结合自己的需求,就可以使用不同类型的触发器。


数据运维技术 » Oracle 触发器:类型总览(oracle触发器类型)