Oracle数据库中关于触发器类型的深入分析(oracle触发器类型)

Oracle数据库中触发器的引入使得表可以自动完成某些操作,理解触发器能够帮助我们更好地应用它们。 Oracle数据库中提供了三种类型的触发器:行触发器、级联行触发器和级联表触发器。

行触发器也叫行级触发器,它是最常用的一种触发器,是应用程序完成特定的数据操作时的一个选择性操作序列。当特定的SQL语句执行时,系统在该表中插入、更新或删除一行时,行触发器会被自动触发执行(这有点类似于宏定义)。例如:

创建一个行触发器,如果发生对表BOOKING的INSERT操作时,对应的剩余座位会自动减1

CREATE OR REPLACE TRIGGER DecreaseSeatNumber

AFTER INSERT

ON BOOKING

FOR EACH ROW

BEGIN

UPDATE SEATS

SET AVAILABLE_SEATS = AVAILABLE_SEATS – 1

WHERE SEAT_NUMBER = :NEW.SEAT_NUMBER;

END;

级联行触发器也是一种常用的触发器,它是在“父表”上发生的操作将会传递给“子表”来触发触发器,“子表”上有触发器,这里父表、子表指的是关系表,通过主外键关联,如果父表发生删除、更新,子表也跟着发生改变,这里子表上也有触发器,这个触发器就叫级联触发器。例如:

定义一个级联行触发器,如果发生对表BOOKING的UPDATE操作时,对应的表BOOKING_DETAILS也将会发生更新

CREATE OR REPLACE TRIGGER UpdateBooking

AFTER UPDATE

ON BOOKING

FOR EACH ROW

BEGIN

IF :NEW.PERSON_NUMBER > 0

THEN

UPDATE BOOKING_DETAILS

SET PERSON_NUMBER = :NEW.PERSON_NUMBER

WHERE BOOKING_ID = :NEW.BOOKING_ID;

END IF;

END;

级联表触发器也叫级联表触发器,又称索引。系统会自动根据索引,触发Update或Delete操作,从而维护联系表之间的关系,主要用于在从表未更新时,删除从表中的记录,与级联行触发器不同的是:级联行触发器只是操作主表,而级联表触发器则既能操作主表,也能操作从表,一般要在主表上定义一个索引,而从表也需要一个索引,来达到级联表触发器的目的。

总而言之,Oracle数据库中提供的三种类型的触发器:行触发器、级联行触发器和级联表触发器,有了触发器的帮助,可以更好地管理Oracle中的表。


数据运维技术 » Oracle数据库中关于触发器类型的深入分析(oracle触发器类型)