Oracle数据库触发器类型及其原理分析(oracle触发器类型)

Oracle数据库触发器是Oracle数据库根据某些特定事件设定好的反应机制,通常是在特定事件发生时,其发动“反应”,从而实现一些比较复杂的操作。由于其作用,通常情况下我们会把它理解为自动执行的脚本。

Oracle数据库触发器可以分为两类:表级触发器(Table)和行级触发器(Row)。表级触发器只要表中触发的操作发生,即可被触发;而行级触发器,只有行操作被触发时才会被触发。

表级触发器通常可以用于审计特定表的数据操作,可以基于某一类操作(如:Insert,Update,delete等)触发表级触发器,让特定的操作在被触发时,自动执行一些指定的行为(如:将某一列的值设为 0,将另外一列的值设为 1 等),用于实现复杂的数据操作和对特定的数据的审计。 例如,我们可以定义一个插入触发器,并且在此基础上定义一些操作,当特定表中发生 put 操作时,可以自动触发 put 操作,从而实现特定表中自动更新列值的效果:

CREATE OR REPLACE TRIGGER set_updated_date 
AFTER INSERT ON table_name
FOR EACH ROW
BEGIN
:NEW.updated_date := SYSDATE;
END;
/

行级触发器和表级触发器有着相同的作用,但是触发条件有所不同,它只有在特定行操作发生时(如:单独的Update行操作)才会被触发,例如:

CREATE OR REPLACE TRIGGER update_row_value 
BEFORE UPDATE OF value
ON table_name
FOR EACH ROW
BEGIN
IF :NEW.value > 0 THEN
:NEW.value_updated := 'yes';
END IF;
END;
/

以上两类触发器可以保证在某些特定的数据操作发生时,能够自动执行一些更加复杂的操作,从而提高操作效率,让复杂的数据操作简化,使数据库操作变得更加简单易维护。


数据运维技术 » Oracle数据库触发器类型及其原理分析(oracle触发器类型)