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

Oracle 数据库的触发器类型可以分为 statement level triggers 和 row level triggers。Statement 级触发器可以获取到 SQL语句本身运行时的变化; row level triggers 可以对行(row)的变化进行捕获,这种细粒度的触发器可以应用于复杂的场景。

Oracle数据库中 statement level triggers 可以被视为一种特殊的存储过程,它允许程序员在某个特定 SQL 语句执行时,根据执行的行为来完成一些特定任务。将一个statement level triggers 与一个特定的 DML 语句关联的 SQL 语句如下所示:

CREATE OR REPLACE TRIGGER  
BEFORE INSERT ON FOR EACH ROW
BEGIN

END ;

Statement trigger旨在帮助用户处理特定的操作。它可以配置为在 INSERT,UPDATE或DELETE 语句之前或之后运行,它可以触发在执行 DML 命令之前调用存储过程。它也可以拒绝用户对表中插入或修改行的请求,允许用户在 DML 操作之前对数据进行安全性检查,以防止违反关系数据库中的完整性约束等,还可以执行其它任何操作。

Oracle数据库的row level triggers 是另一种类型的触发器,它因执行处理被更新的行而得名。与 statement level triggers 不同,row level triggers 是在 DML 语句成功执行之前被调用。典型的 row level triggers SQL 语句如下所示:

CREATE OR REPLACE TRIGGER  
BEFORE UPDATE ON FOR EACH ROW
BEGIN

END ;

同样,row level trigger也可以被应用于 INSERT,UPDATE或DELETE 语句,但是它与 statement level 的不同之处在于:row level triggers在执行后的每一行更新之前,都会被调用一次。这种触发器最大的优势在于拥有更强大的指令,以及可以以更精细的粒度,更精准地捕获变化的数据,比如说可以根据每一行变化的不同做出不同的处理。

总而言之,Oracle 数据库的触发器类型可以分为 statement level triggers 和 row level triggers 。触发器允许程序员在 DML 语句执行时,根据实际情况自动执行任务,可以拒绝不符合约束条件的操作,也可以把更复杂的操作拆分成更小的粒度,以便更好地捕获变化和执行用户定义的任务。


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