Oracle触发器类型及其应用(oracle触发器类型)

Oracle数据库是一种关系型数据库管理系统,支持强触发器功能,其中包括三种不同类型的触发器,分别是行触发器、覆盖式触发器和语句级触发器。

行触发器:行触发器允许您在表中添加、更新或删除行时触发执行的PL / SQL代码。行触发器允许您修改触发器操作期间插入或更新的行。通常行触发器有助于维护表的完整性和一致性。

例:

CREATE OR REPLACE TRIGGER trg_product_update

BEFORE UPDATE ON product

FOR EACH ROW

BEGIN

IF :new.price

SELECT clr_product_price_log(‘PRICE_LOWER’, :new.prod_id,

:new.price, :old.price)

INTO :new.price_update

FROM dual;

END IF;

END trg_product_update;

/

覆盖式触发器:覆盖式触发器允许在表中任何插入,更新或删除操作发生时触发执行的PL / SQL代码。与行触发器相比,覆盖式触发器不会更改触发器操作期间插入或更新的行。此外,它们只会引发一次,而不管表中改变了多少行。

例:

CREATE OR REPLACE TRIGGER trg_insert_log

AFTER INSERT ON product

FOR EACH ROW

BEGIN

INSERT INTO prod_log

VALUES (:new.prod_id, :new.name,

SYSDATE, ‘Inserted’);

END trg_insert_log;

/

语句级触发器:语句级触发器允许您在表上下文中执行任何INSERT、UPDATE或DELETE语句时触发执行的PL / SQL代码。使用语句级触发器,程序员可以对用户发出的数据库指令进行控制,并执行代码。例如,您可以在发出UPDATE语句之前,使用语句级触发器检查新值,并确保它们与一致性要求相匹配。

例:

CREATE OR REPLACE TRIGGER trg_product_update

BEFORE UPDATE OR DELETE ON product

FOR EACH ROW

BEGIN

IF updating THEN

IF :new.price

RAISE_APPLICATION_ERROR(-20900,

‘Product Price cannot be lowered’);

END IF;

END IF;

END trg_product_update;

/

Oracle触发器的应用:

1、用于表的完整性检查;

2、可以用于记录表变更的历史记录,包括表的修改记录、删除记录以及新增记录;

3、可以借助触发器,在数据库表之间建立数据一致性。

总之,Oracle触发器是一种非常有用的功能,它可以帮助数据库管理员执行维护和管理功能,以确保数据库表中数据的完整性和一致性。


数据运维技术 » Oracle触发器类型及其应用(oracle触发器类型)