探索 Oracle 触发器的种类与特点(oracle触发器类型)

Oracle数据库提供了一种强大的对象——触发器,它可以响应表的改变,实现自动化的业务逻辑,在不增加更多的编程复杂度的前提下,可以简化程序的条件判断和循环处理。在数据库层面实现数据完整性和效率不可谓不理想。经过多年的发展,Oracle 触发器不仅能够满足实际业务需求,又能有效地保证操作的安全性,Oracle触发器的种类与特点如下:

### 行级触发器

行级触发器只有在表中某行数据发生改变时触发,即当这行记录被插入、更新或删除时触发。 

例如:触发器名为“AFTER_TRIG”

“`SQL

CREATE OR REPLACE TRIGGER AFTER_TRIG

after insert or update or delete on T3

for each row

declare

S_NAME varchar2(20);

begin

insert into T2 values (:old.NO,:old.NAME);

end;


当表T3中某行被插入、更新、删除时,触发器AFTER_TRIG就会检测到并把T3表中当前被改变行的NO和NAME字段值插入T2表中。

### 块级触发器

块级触发器为在ORACLE FORM中的某一块触发而定,比如在某块输入完毕就触发触发器,而行级触发器只有在当前行输入完毕之后才触发。

块级触火往往和行级触发器共同用于解决复杂的业务逻辑问题,比如计算表B中NAME字段所有记录的长度总和,那么可以编写如下块级触发器:

```SQL
DECLARE
COUNT_LENGTH NUMBER;
BEGIN
SELECT SUM(LENGTH(NAME)) INTO COUNT_LENGTH
FROM B;
UPDATE A SET LENGTH_TOTAL = COUNT_LENGTH;
END;

这个触发器就会在两个表之间执行操作,把表B中NAME字段所有记录的长度总和更新到表A的LENGTH_TOTAL字段中。

### 表级触发器

表级触发器只要表中拥有被增加、更新或删除数据,则触发器就会被触发,无论表进行的的操作是插入、更新或删除,只要符合触发条件,就会被触发执行,常用于实现对一张表的数据统计、报表统计等等;例如:

“`SQL

CREATE OR REPLACE TRIGGER TRIG_TABLE

after insert or update or delete on T3

declare

COUNT_VALUE NUMBER;

begin

select count(*) INTO COUNT_VALUE

from T3;

INSERT INTO T2(NO,VALUE) VALUES (2,COUNT_VALUE);

end;


这个表级触发器就会在表T3的操作之后,把T3中的所有记录数自动写入到表T2中。

以上我们就简单介绍了Oracle触发器的三种类型,虽然它们各有不同的作用,但是都能实现在表的操作之后自动调用触发器,实现业务的自动化,从而提高了业务的效率和完整性。

数据运维技术 » 探索 Oracle 触发器的种类与特点(oracle触发器类型)