Oracle触发器:从类型到实践(oracle触发器类型)

Oracle数据库触发器是用来执行特定任务的数据库对象,它有助于自动执行特定操作,以增加数据库中以及与之相关的安全性和企业性能。Oracle触发器一共有三种类型:行触发器、表触发器和系统触发器。

1. 行触发器:行触发器是在表中根据特定条件发生变化时调用,导致Oracle执行操作的触发器,它是Oracle针对表操作的基本触发器类型。当满足指定的条件引发触发器时,将触发一系列操作,该操作重新计算预定的条件,以更新一张表,或者调用存储过程或函数,进而执行代码或其他一系列数据库操作。下面的例子演示如何创建一个行触发器,当TRAN_AMOUNT > 1000时,执行对TRAN_AMOUNT字段的更新:

CREATE TRIGGER trg_amount

BEFORE INSERT OR UPDATE OF tran_amount ON trans

FOR EACH ROW

BEGIN

IF (:NEW.tran_amount > 1000)

THEN

UPDATE trans

SET tran_amount = 1000

WHERE :NEW.tran_amount = :OLD.tran_amount;

END IF;

END;

2. 表触发器:表触发器是在操作应用到定义过触发器的表时被触发的触发器,以此类推,它们也称为母表触发器。其主要功能是对特定对象发生更改时能动态更新内容。下面的例子创建一个表触发器,当某张表的数据发生变化时,将会触发一个操作,该操作更新另一张表内的全部行:

CREATE TRIGGER trg_table

BEFORE INSERT OR UPDATE ON trans

FOR EACH ROW

BEGIN

UPDATE trans SET tran_amount = 1000;

END;

3.系统触发器:系统触发器是以某些系统事件为出发点被触发的触发器。这些系统事件多出现在系统级操作,比如登录系统或者启动数据库的时候。系统触发器的实质是一个存储过程,因此可以在这些实质为存储过程的触发器中执行任何操作。如果到某些时候有必要应用一些复杂的计算逻辑,则可以使用存储过程及其他逻辑对象,结合系统触发器来完成。

以上就是Oracle触发器的三种类型:行触发器,表触发器和系统触发器。Oracle触发器可以减少开发人员编写过多代码,帮助实现自动化,从而增加数据库以及与之相关的安全性和企业性能。


数据运维技术 » Oracle触发器:从类型到实践(oracle触发器类型)