深入浅出 Oracle 触发器类型实战(oracle触发器类型)

Oracle 触发器类型实战

Oracle数据库系统中的触发器(Trigger)是一种基于持续性的机制,用于实现指定的功能。触发器的出现,可以自动执行某一特定的操作,比如在数据库表中新插入数据时,系统会自动触发特定的操作,以实现自动化处理逻辑或数据,也可以对指定的数据库表和视图中的数据进行监督管理,从而达到较高的安全性。

Oracle共有多种触发器类型,这些类型分别有:表级触发器(Table Level Trigger)、行级触发器(Row Level Trigger)、 BEFOR触发器(BEFOR Trigger)、AFTER触发器(AFTER Trigger)、INSTEAD OF触发器(INSTEAD OF Trigger)以及登录触发器(Logon Trigger)。

首先介绍下表级触发器,表级触发器作用于定义触发器的表,在有数据库DML操作时以及指定的触发条件下(Before或After),都会自动地执行。 语法如下:

CREATTE OR REPLACE TRIGGER Trigger_name

{BEFORE |AFTER}

{INSERT [OR] |UPDATE [OR]| DELETE}

ON table_name

[FOR EACH ROW]

[WHEN (condition)]

BEGIN

[statement 1]

[statement 2]

[statement …]

END

其次,介绍行级触发器,它在每一行数据上触发,作用于定义触发器的表,在表中出现DML操作,且满足触发条件下,都会自动执行指定的操作。行级触发器的语法如下:

CREATTE OR REPLACE TRIGGER Trigger_name

{BEFORE |AFTER}

{INSERT [OR] |UPDATE [OR]| DELETE}

ON table_name

FOR EACH ROW

[WHEN (condition)]

BEGIN

[statement 1]

[statement 2]

[statement …]

END

再举例BEFOR触发器,指的是在定义的触发条件(BEFOR)下,在实际对应的表或视图上执行的操作,而此操作在实际的DML操作发生之前就会被触发。BEFOR触发器的语法如下:

CREATTE OR REPLACE TRIGGER Trigger_name

BEFORE

{INSERT [OR] |UPDATE [OR]| DELETE}

ON table_name

[FOR EACH ROW]

[WHEN (condition)]

BEGIN

[statement 1]

[statement 2]

[statement …]

END

最后介绍INSTEAD OF触发器,它主要应用在视图上,在视图层面上做插入、删除或更新操作时,而此操作只会影响视图,不会影响实际的表结构,INSTEAD OF触发器的语法如下:

CREATTE OR REPLACE TRIGGER Trigger_name

INSTEAD OF

{INSERT [OR] |UPDATE [OR]| DELETE}

ON view_name

[FOR EACH ROW]

[WHEN (condition)]

BEGIN

[statement 1]

[statement 2]

[statement …]

END

上述就是介绍Oracle中几种类型触发器的实例,其中,表级触发器可以对数据库一次性操作多行数据;行级触发器则可以对每一行数据进行影响;BEFOR触发器可以在实际操作发生前触发,从而调整操作结果;INSTEAD OF触发器则可以由视图层作出响应,不影响实际数据表结构。因此,触发器的多种类型在实际应用中得到充分利用,将大大提高Oracle数据库的操作效率和响应能力。


数据运维技术 » 深入浅出 Oracle 触发器类型实战(oracle触发器类型)