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行,需要对另一张表做相应更新”这种场景,比如:
```sqlCREATE 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触发器还可以用来执行有关用户安全性的操作,比如拦截使用特定权限的用户尝试读取的敏感及机密数据,以及保护数据库不受�