简明Oracle数据库触发器类型概述(oracle触发器类型)
Oracle 数据库触发器是在表,视图或数据库上定义的一种特殊类型的存储过程。 它通常被设计用来在对特定对象上进行修改(INSERT,UPDATE和/或DELETE)之后自动执行一个动作。 触发器由一组条件和动作组成; 一旦确定了满足特定条件的情况,它将执行特定的动作。 这些条件可以是某个表的新行插入,一个旧的行更新,一个新列添加,一个旧的列更新等。
Oracle数据库触发器可以分为三类:DML触发器,DDL触发器和日志事件触发器。
DML触发器是在对表(或视图)进行数据更新操作(INSERT,DELETE或UPDATE)时激发的。 这种触发器只影响表(或视图)上发生更新操作的行,因此用户可以有效地使用这种触发器来记录流通的表中更新操作,或者在更新某行时自动执行某些操作。 例如,我们可以创建一个创建特定表中新行时触发的触发器,来更新另一个表:
CREATE OR REPLACE TRIGGER trg_2
AFTER INSERT ON MyTableREFERENCING NEW AS N
FOR EACH ROWBEGIN
INSERT INTO MyOtherTable (col1, col2) VALUES (N.col1, N.col2);END;
DDL触发器可以在更改数据库结构时触发,例如创建表,修改表结构,删除表等。 这种触发器有助于确保在数据库级别进行更改时采取正确的操作,例如在执行删除表操作之前更新另一个表中的数据。 例如,我们可以创建触发器来更新一个表在删除另一个表之前:
CREATE OR REPLACE TRIGGER trg_3
BEFORE DROP ON MyTable2BEGIN
UPDATE MyTable1 SET col3 = ‘SOMETHING’;END;
最后,日志事件触发器可以在当前会话或数据库上的特定日志事件发生时触发,例如在登录时或在超时时。 例如,我们可以创建触发器,在登录时更新我们的表:
CREATE OR REPLACE TRIGGER trg_4
AFTER LOGON ON DATABASEBEGIN
INSERT INTO MyTable (col1) VALUES (USER);END;
综上所述,Oracle数据库触发器有DML,DDL和日志事件触发器三种类型,可以帮助用户在数据库对象上执行操作时自动执行特定的动作。