精通Oracle触发器的分类与使用(oracle触发器类型)

触发器是Oracle提供的一种功能,能够按照先前定义好的条件对某些事件提供响应。触发器可以使数据库、表以及列数据在内部或者外部受到宣布以及操作。本文将着重介绍Oracle触发器的分类以及使用。

Oracle触发器分为两大类:行触发器和表触发器,分别可以进一步划分为BEFORE、AFTER以及INSTEAD OF三种类型,具体如下:

1. 行触发器:

* BEFORE:一行被插入或者更新时触发,执行插入前的动作

* AFTER:一行被插入或者更新时触发,执行插入后的动作

2. 表触发器:

* BEFORE:一表被插入、删除或者更新时触发,执行插入前、删除前或者更新前的动作

* AFTER:一表被插入、删除或者更新时触发,执行插入后、删除后或者更新后的动作

* INSTEAD OF:相当于替换,当一表被插入、删除或者更新时触发,替换原本的插入、删除或者更新动作

Oracle触发器有许多具体用法,下面举一个具体DDL操作更新前触发器,用来捕获原本信息:

`CREATE OR REPLACE TRIGGER trg_before_tb_update

BEFORE UPDATE ON tb_update

FOR EACH ROW

DECLARE

v_name VARCHAR2(20);

BEGIN

SELECT name INTO v_name FROM tb_update WHERE id = :OLD.id;

DBMS_OUTPUT.PUT_LINE(‘原来name:’ || v_name);

END;

/`

给表tb_update创建一个名为trg_before_tb_update的触发器,以BEFORE类型,FOR EACH ROW,当更新tb_update表时触发,根据id捕获原始的name,放入v_name变量,将v_name的内容打印出来。

需要注意的是,Oracle触发器对DDL或者DDL语句无效,因此更新表结构时,不能使用触发器来跟踪具体谁操作什么,而是可以用触发器来实现数据自动更新/重置/删除等。

总结来说,Oracle触发器是在一些特定的行为发生时,提供回应的一种技术,其分类已给出,使用起来也较为简单。但要注意DDL操作触发器无效,这时就不能用触发器进行动作。


数据运维技术 » 精通Oracle触发器的分类与使用(oracle触发器类型)