深入浅出: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
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
同样,row level trigger也可以被应用于 INSERT,UPDATE或DELETE 语句,但是它与 statement level 的不同之处在于:row level triggers在执行后的每一行更新之前,都会被调用一次。这种触发器最大的优势在于拥有更强大的指令,以及可以以更精细的粒度,更精准地捕获变化的数据,比如说可以根据每一行变化的不同做出不同的处理。
总而言之,Oracle 数据库的触发器类型可以分为 statement level triggers 和 row level triggers 。触发器允许程序员在 DML 语句执行时,根据实际情况自动执行任务,可以拒绝不符合约束条件的操作,也可以把更复杂的操作拆分成更小的粒度,以便更好地捕获变化和执行用户定义的任务。