Oracle 触发器:不同类型的应用(oracle触发器类型)
Oracle 数据库具有一种功能称为触发器,它能够使数据库在某事件发生或另一操作完成时自动执行特定操作。触发器可以是一种非常有用的工具,可以帮助我们实现比如维护复杂的业务逻辑,执行定期任务等等场景。
ORACLE 中的触发器分为四类,包括行触发器、表触发器、SESSION 触发器和 DATABASE 触发器。
行触发器由 DML 操作 (INSERT、DELETE 和 UPDATE) 引起,它能够作出反应,当进行该操作时要执行指定的动作。这种类型的触发器可用于检查行中的正确性或强制更新有关行的其他表,以协调调用程序中的数据行。例如,可以使用下面的行触发器来阻止代码员在插入同日期的记录:
“`sql
CREATE OR REPLACE TRIGGER No_Dups
BEFORE INSERT
ON Employees
FOR EACH ROW
BEGIN
IF (:NEW.Emp_Start_date IN (SELECT Emp_Start_date FROM Employees))
THEN
raise_application_error(-20000,’Start Date already exists’);
END IF;
END;
表触发器与行触发器类似,但它应用于一个整张表,表触发器不能引用来自另一个表的新值或旧值。此外,支持 DML 操作的表触发器只能使用INSERT 或 UPDATE (它允许 INSERT、UPDATE) 但不允许 DELETE 操作。例如,下面的表触发器将以每次 INSERT 操作而触发,以表 Employees 来更新表统计:
```sqlCREATE OR REPLACE TRIGGER Update_Stats
AFTER INSERT ON Employees
BEGIN UPDATE Statistics
SET Num_of_Employees = (SELECT Count(*) FROM Employees); END;
Oracle 中还支持 SESSION 触发器以及 DATABASE 触发器,分别在登录会话和关闭/启动数据库时发生,当然这些触发器通常用于完成特殊的任务。
因此,由于 ORACLE 触发器的灵活性及其不同类型,它们可用于自动执行许多常见的数据库任务,尤其是处理复杂的业务逻辑,在 ORACLE 开发中是一种必不可少的工具。