深入浅出 Oracle 触发器类型(oracle触发器类型)

深入浅出 Oracle 触发器类型

触发器是可以自动执行的Oracle数据库操作,有多种类型。从功能上看,可以分为管理触发器和更新触发器。首先介绍前者,管理触发器一般在表中没有插入或者更新操作时被调用,执行一些定义的动作。更新触发器一般在表中发生插入或者更新操作时被调用,执行一些定义的动作。

由于Oracle在实现触发器行为时提供了多种条件和动作,所以我们可以根据自己的要求灵活地设计多种类型的触发器,大致可以分为以下几种:

一、行级触发器

行级触发器指的是对某一行数据进行插入/更新/删除操作时触发的触发器,它的定义如下:

CREATE OR REPLACE TRIGGER |TRIGGER_NAME|

BEFORE |OPERATION| ON |TABLE_NAME| FOR EACH ROW

BEGIN

|statement1|;

|statement2|;

END;

二、表级触发器

表级触发器指的是当某个表的任何行发生插入/更新/删除操作时触发的触发器,它的定义如下:

CREATE OR REPLACE TRIGGER |TRIGGER_NAME|

BEFORE |OPERATION| ON |TABLE_NAME|

BEGIN

|statement1|;

|statement2|;

END;

三、元级触发器

元级触发器指的是对某一数据库对象进行DDL操作时触发的触发器,它的定义如下:

CREATE OR REPLACE TRIGGER |TRIGGER_NAME|

BEFORE |OPERATION| OF |TABLE_NAME|

BEGIN

|statement1|;

|statement2|;

END;

以上是Oracle提供的三种触发器,不同类型的触发器用于不同场景。可以根据自己的实际情况使用合适的触发器。最后再附上一个实际的例子:

CREATE OR REPLACE TRIGGER tr_test_trigger

BEFORE INSERT ON test

FOR EACH ROW

BEGIN

IF :NEW.code IS NULL THEN

raise_application_error(-20001, ‘code must not be null!’);

END IF;

END;


数据运维技术 » 深入浅出 Oracle 触发器类型(oracle触发器类型)