Oracle触发器的多种类型及其应用(oracle触发器类型)

场景

Oracle触发器是由Oracle数据库管理系统(Oracle Database Management System,简称Oracle DBMS)提供的一种数据库管理技术,用于在特定的数据库操作发生时执行指定的动作。Oracle触发器的另一种定义是在特定的数据库操作发生时,能够自动地产生响应动作,使用户能够管理特定表或视图数据、创建新表、对数据源进行监控以及进行数据报表操作等。

Oracle触发器可以分为两种:行触发器和表触发器。行触发器,也称为行级触发器,是在插入或更新一行时执行的程序。一般是在INSERT或UPDATE语句执行时触发触发器,在考虑行触发器上,主要用于实现“诸如某一行插入到表中后,需要立即更新另一张表”这种场景,比如下面的例子:

“`sql

CREATE OR REPLACE TRIGGER update_account_trigger

AFTER INSERT

ON order_table

FOR EACH ROW

DECLARE

v_balance NUMBER;

BEGIN

SELECT A.balance INTO v_balance

FROM account A

WHERE A.name = :new.cust_name;

UPDATE account A

SET A.balance = v_balance – :new.order_amt

WHERE A.name = :new.cust_name;

END;

/


表触发器,也叫表级触发器,是在对一张表有Update或Merge操作时才触发的,主要用于实现“更新了某张表的N行,需要对另一张表做相应更新”这种场景,比如:

```sql
CREATE OR REPLACE TRIGGER update_order_total
AFTER INSERT OR UPDATE OR DELETE
ON order_table
BEGIN
IF INSERTING OR UPDATING THEN
UPDATE order_table
SET order_total = (select SUM (order_amt)
from order_table
where cust_name = :new.cust_name);
END IF;
END;

Oracle触发器能应用于众多场景,包括在 DML 操作发生时自动生成序列号、维护关联表、根据父表行变更对子表执行增删改等。此外,Oracle触发器还可以用来执行有关用户安全性的操作,比如拦截使用特定权限的用户尝试读取的敏感及机密数据,以及保护数据库不受�


数据运维技术 » Oracle触发器的多种类型及其应用(oracle触发器类型)