Oracle数据库中的触发器类型介绍(oracle触发器类型)
Oracle 数据库中的触发器类型介绍
Oracle 是一款广受欢迎的关系数据库管理系统,它提供了触发器功能,允许用户在满足特定条件时执行动作(通常是一个或多个SQL语句)。用户可以使用触发器来实现许多日常处理任务,比如记录数据库变更,维护表结构完整性,实现数据库安全性,阻止不允许的变更等等。
Oracle 数据库中,有4种类型的触发器,它们分别是:
– BEFORE 触发器
Before 触发器在满足特定的条件时,会自动执行指定的动作。然而,由于该触发器在进行更改之前运行,所以它不会访问被触发的行,也不会更改任何值。以下是Before触发器的语法:
CREATE [OR REPLACE] TRIGGER triggername {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON tablename [REFERENCING OLD AS old NEW AS new] FOR EACH ROW [WHEN (condition)]
BEGIN
— triggner body
END;
– AFTER 触发器
After触发器同样只有在满足指定条件时才会被执行,只是在执行时,已经完成了更改。由此可以看出,如果想访问触发表中的另一行以及触发行的原来的值(OLD)和新的值(NEW),则最佳的选择是AFTER触发器。以下是After触发器的语法:
CREATE [OR REPLACE] TRIGGER triggername {BEFORE | AFTER } {INSERT | UPDATE | DELETE} ON tablename [REFERENCING OLD AS old NEW AS new] FOR EACH ROW [WHEN (condition)]
BEGIN
— triggner body
END;
– INSTEAD OF 触发器
Instead Of触发器也只在满足特定条件时才会被执行,但它完全替代了被触发的行,即执行动作后,真正发生了变化的是替代行而不是原先的行。以下是Instead Of触发器的语法:
CREATE [OR REPLACE] TRIGGER triggername INSTEAD OF {INSERT | UPDATE | DELETE} ON tablename [REFERENCING OLD AS old NEW AS new] FOR EACH ROW [WHEN (condition)]
BEGIN
— triggner body
END;
– COMPOUND 触发器
Compound触发器在满足特定的条件时,会执行多个单独的触发器,它可以让用户用一个触发器来替代多个触发器。以下是Compound触发器的语法:
CREATE [OR REPLACE] TRIGGER triggername {BEFORE | AFTER | INSTEAD OF } {INSERT | UPDATE | DELETE} ON tablename [REFERENCING OLD AS old NEW AS new] FOR EACH ROW BEGIN
— triggner body
END;
其中,triggername是触发器的名称;tablename是被触发的表的名称;condition对应的是当什么条件满足时才会触发;triggner body 就是触发器将执行的内容,一般是一个或多个SQL语句。
总之,Oracle数据库中有4种类型的触发器,每种触发器都有其独特的语法,这些触发器可以用来完成各种自动化任务,从而提高数据库的整体性能和数据安全性。