深入理解Oracle 触发器的类型和用法(oracle触发器类型)
Oracle 触发器是指在执行特定数据库操作时发出指令,根据用户定义在特殊表上插入或修改行来相应响应。也就是说,Oracle 触发器可以在某一特定的表或者视图发生变更时,自动触发执行的代码。它可以定义在表、视图以及数据库层面,只要满足触发器规定的条件,触发器就会立即被调用。
Oracle 触发器主要有两种类型:表触发器和数据库触发器。表触发器定义在特定表上,当特定的表收到insert、update或delete行为触发器就会立即被调用(即使受影响的行数为0也会触发)。
下面的示例说明了如何创建一个表触发器:
“`sql
CREATE OR REPLACE TRIGGER example_trigger
AFTER INSERT
ON Employee
FOR EACH ROW
— Using the :new pseudo-record
— to refer to the just-inserted employee
BEGIN
INSERT INTO other_table
VALUES (:new.name);
END;
/
上例的触发器定义:在Employee表上插入新行触发器“example_trigger”,使用pseudo-record“:new”来引用刚插入的信息,并将其写入other_table表中。
另外一种Oracle触发器——数据库触发器,它与表触发器有所不同,它定义在全局数据库级别而不是某个表的级别。这意味着对于任何表的任何操作,该触发器都会被触发(插入、更新或删除)。当收到任何这三类(insert、update或delete)操作时,数据库触发器就会被执行,当然受影响的行数也不会是0,否则触发器将不会被调用。
下面的示例是数据库触发器的典型形式:
```sqlCREATE OR REPLACE TRIGGER example_trigger
AFTER INSERT OR UPDATE OR DELETE ON DATABASE
BEGIN -- Trigger code follows
... END;
/
上例的触发器定义:当数据库收到任何insert、update或delete操作时,触发器“example_trigger ”就会被调用,执行后续的trigger code,以完成特定的操作。
总之,Oracle触发器可以帮助我们自动执行一些任务,从而简化我们的一些操作,而表触发器和数据库触发器是不同类型的触发器,应用场景也不同,SQL语句分别负责定义不同类型的触发器。