Oracle 数据库触发器的类型及应用(oracle触发器类型)

Oracle 数据库触发器是指在特定条件下自动触发并执行的SQL命令序列——即当触发器定义的触发条件被满足时,该条件可以触发SQLCMD命令,相应的操作按照可配置的时序执行。Oracle数据库触发器一共分为四类:表级触发器,行级触发器,登录触发器和系统事件触发器,本文将对他们进行介绍及示例说明。

表级触发器是指在数据表上定义的触发器,可基于 DML (Data Manipulation Language)操作来触发,常见的有INSERT、UPDATE、DELETE等,其中INSERT触发器又分为BEFORE和AFTER两种类型,示例如下:

BEFORE INSERT语句:

CREATE OR REPLACE TRIGGER trig_name

BEFORE INSERT ON schema_name.table_name

FOR EACH ROW

declare

……

BEGIN

–do your work

……

END;

对于UPDATE触发器,同样也分为BEFORE和AFTER两种类型,示例如下:

BEFORE UPDATE语句:

CREATE OR REPLACE TRIGGER trig_name

BEFORE UPDATE ON schema_name.table_name

FOR EACH ROW

declare

……

BEGIN

–do your work

……

END;

而行级触发器与表级触发器类似,依旧是基于DML操作来触发,唯一的区别是其只在特定的行上触发,而不是特定的表,示例如下:

BEFORE INSERT语句:

CREATE OR REPLACE TRIGGER trig_name

BEFORE INSERT ON schema_name.table_name

REFERENCING NEW AS new_row

FOR EACH ROW

declare

……

BEGIN

–do your work

……

END;

登录触发器是指触发器重触发条件是登录,而不是某张表或某行数据。当用户以特定方式成功登录时会触发其中定义的SQL命令序列。示例如下:

CREATE OR REPLACE TRIGGER trig_name

AFTER LOGON ON SCHEMA

BEGIN

–do your work

END;

最后,系统事件触发器会基于一些特定的系统事件而触发,例如数据库实例startup、shutdown,示例代码如下:

CREATE OR REPLACE TRIGGER trig_name

AFTER STARTUP ON DATABASE

BEGIN

–do your work

END;

Oracle数据库触发器的应用用途极其广泛,可以帮助管理者用于实现自动审计功能,也可以帮助开发者实现快速记录数据变更,从而实现数据库安全操纵。至此,本文介绍了Oracle 数据库触发器的类型及应用,希望能够帮助到大家。


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