Oracle数据库中的触发器类型简介(oracle触发器类型)
触发器(Trigger)是一种特殊的存储过程,可以在Oracle数据库中触发某个行为。在某种条件下,它会自动完成某个操作。触发器的作用是当它侦测到某种变化时,就自动触发一类特定的操作,从而大大简化数据库的操作,提升数据库的性能,减少用户程序的复杂性。
触发器又分为不可定制触发器(Non-Customisable Trigger)和可定制触发器(Customisable Trigger)。前者是指由Oracle系统自动生成的触发器,后者是指由用户自定义的触发器,它可以实现一些比较复杂的触发动作。
Oracle系统提供了不可定制触发器的三种类型:计算列触发器,早期绑定触发器和延迟绑定触发器。
计算列触发器是基于列的,当列的值发生变化时触发器就会出发。通常,当表中插入新行或修改现有行时,这种类型的触发器会被调用。
早期绑定触发器是在SQL语句被执行之前被触发的,它会阻止被触发的SQL语句被执行,检查附加的条件,如果条件满足,则将SQL语句执行,否则,将返回错误消息。
延迟绑定触发器是在SQL语句被执行完成后被执行的,它会验证被触发的SQL语句的执行结果,检查是否满足条件,如果条件满足,就会执行触发器中定义的PL/SQL语句;如果条件不满足,则触发器不起作用。
下面是一个示例,演示如何创建可定制触发器:
CREATE TRIGGER my_trigger
BEFORE INSERT OR UPDATE ON my_table
FOR EACH ROW
DECLARE
variable1 INTEGER;
variable2 VARCHAR2(20);
BEGIN
variable1 := conv_to_int(:NEW.column1);
variable2 := conv_to_string(:NEW.column1);
IF variable1 > 0 THEN
INSERT INTO my_table2 VALUES (variable1, variable2);
END IF;
END;
该示例实现了在“my_table”表中插入或更新数据行时,将这些数据行的信息插入到另一张表“my_table2”中的动作。
由此,我们可以看出,在Oracle数据库中,触发器分为不可定制触发器和可定制触发器两种类型,每种类型又有计算列触发器、早期绑定触发器和延迟绑定触发器三种子类型,它们可以用来实现各种复杂的动作,可以大大提高系统的效率。