Oracle数据库中的触发器类型(oracle触发器类型)

Oracle数据库中的触发器类型

触发器是一种特殊的存储过程,它可以在表上触发,而不会影响到用户层的代码。它的优点包括:不需要关心更新所需的代码,在一个操作中一次性更新多行,以及在某时刻修改记录。

Oracle中的触发器分成三种:系统定义触发器,用户定义触发器和存储过程触发器。

系统定义触发器是在Oracle数据库安装完成后自动创建的,它们在ORACLE实例级别被触发,受系统参数等控制。Oracle定义的系统触发器有DDL_TRIGGERS,TRIGGER_BY_TIME,TRIGGER_CLEANUP等。

用户定义触发器是由DBA或者其他有效的用户在用户的架构中创建的,它们用来在表上触发各种事件。比如我们可以创建一个触发器,用来在每次将数据插入表中时校验其有效性,也可以在每次表上有变动时更新另一张表内的对应数据,还可以在每次数据变动时生成日志文件以记录当前的操作信息等。例如:

CREATE OR REPLACE TRIGGER trig_bifore_insert BEFORE INSERT ON loan

FOR EACH ROW

BEGIN

IF (:NEW.id IS NULL) THEN

RAISE_APPLICATION_ERROR(-20000, ‘id不能为空’);

END IF;

END;

存储过程触发器可以定义为由表触发的存储过程,可以在指定的时间或情况下自动调用,这样当表上发生改变时,可以封装一些相关的操作在存储过程级别进行处理,这种方式可以有效解决做一些比较复杂的逻辑处理时调用存储过程的需求。例如:

CREATE OR REPLACE TRIGGER trig_update AFTER UPDATE ON bank

FOR EACH ROW

BEGIN

MY_SP(:OLD.ID, :NEW.ID);

END;

以上就是Oracle数据库中的触发器类型。触发器用来在表上触发各种事件,可以有效地进行对记录的修改或更新,灵活处理复杂的操作逻辑,增强了数据库系统的可用性和安全性。


数据运维技术 » Oracle数据库中的触发器类型(oracle触发器类型)