Oracle 触发器:类型总览(oracle触发器类型)
如果要对数据库进行正确的操作并正确的实现许多操作,我们就需要触发器(Triggers)了。Oracle 数据库中的触发器(Triggers)可以简化数据库开发和管理,当设置完毕之后,在预定条件被满足时,它可以自动完成预定义的操作,所以在 Oracle 中不仅支持常见的 select,insert,update 操作,还支持触发器。
Oracle 触发器分为以下几种:
– 表触发器(Table Trigger)
表触发器可以挂钩在表上,它会在有对表的 CRUD 操作发生时触发,它的执行时机分为前触发和后触发,前触发是在表的操作之前触发,而后触发则是在表操作之后触发。
下面是一个用于监控表 emp 表更新后的触发器:
CREATE OR REPLACE TRIGGER trg_emp_update
AFTER UPDATE ON empFOR 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_EMPINSTEAD 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 中几种类型的触发器,以及相关介绍和案例,大家可以结合自己的需求,就可以使用不同类型的触发器。
编辑:一起学习网
标签:触发器,操作,视图,是一个,示例