深入浅出 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;