Oracle触发器可以帮助用户在实现数据变更时加固数据完整性,在实现业务处理需求时很有用。触发器可以帮助实现:记录更新日期、表字段触发数据变更、增加表字段的触发校验、阻止表中某些特殊的值的写入、维护更新或日志表内容等。

 

从几十年以来,Oracle数据库系统已经提供了其事件发生时触发SQL语句的功能,叫触发器。触发器可以应用于表级别和数据库级别。它是由PL/SQL块定义的,当指定特定操作触发时,触发器被调用。

 

Oracle触发器有多种用途,一种是在记录更新时自动更新日期字段;另一种是在未知表中更改记录时向审计表中插入一条新记录,这是一种管理更改的审计策略;最后一种是当更改特定枚举类型字段时,根据触发器定义禁止未知值的设置。

 

下面是一个Oracle触发器的例子:

“`sql

— 创建一个基于表的触发器

CREATE OR REPLACE TRIGGER trg_tbl_update

BEFORE UPDATE OF col1, col2 ON table1

FOR EACH ROW

BEGIN

— 格式化日期数据

IF Updating(‘col1’) THEN

:new.col1 :=TRUNC(SYSDATE);

END IF;

— 更新col2

IF Updating(‘col2’) THEN

:new.col2 := 999;

END IF;

END;

/

 

— 创建一个基于行的触发器

CREATE OR REPLACE TRIGGER trg_row_update

AFTER UPDATE OF col1, col2 ON table1

FOR EACH ROW

BEGIN

Insert into audit_table (col1, col2, update_time)

values (:new.col1, :new.col2,sysdate);

END;

/

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注