深入Oracle触发器类型之旅(oracle触发器类型)

Oracle触发器可以完成一系列动作,使用触发器可以满足我们的复杂的各种要求,有几种不同类型的触发器可以使用,研究了触发器的基本概念,那么就让我们开始探索Oracle触发器类型之旅吧。

一、行触发器

行触发器是表触发器中最常用的类型,它被触发时仅受影响的是发生变化的行。行触发器的定义如下:

“`sql

CREATE OR REPLACE TRIGGER某位置_trigger_name

BEFORE [ INSERT OR UPDATE OR DELETE ]

ON [ table_name ]

FOR EACH ROW

[ DECLARE ]

BEGIN

// 你想要发生的某动作

END;

/


在此定义中,关键字 BEFORE 指定了在插入、更新或删除某行之前,此触发器才会被触发,而变量 :new 和:old 则可被用来引用发生变化的行。

二、表触发器

表触发器是行触发器的一种简化版本,它相比行触发器受影响的范围更小,只影响被修改表的整张表,而非发生变化的行。表触发器的定义如下:

```sql
CREATE OR REPLACE TRIGGER某位置_trigger_name
BEFORE [ INSERT OR UPDATE OR DELETE ]
ON [ table_name ]
FOR EACH STATEMENT
[ DECLARE ]
BEGIN
// 你想要发生的某动作
END;
/

在此定义中,表触发器和行触发器类似,不同的是在 FOR EACH STATEMENT 关键字前,它没有指定变量 :new 和:old,表触发器更多的得到已更新表的完整副本,此副本将受到在代码块中定义的各种操作影响。

三、原子触发器

原子触发器是Oracle用于处理DML语句事务性表示的方法,可以清楚地让它受到多条DML语句的影响。当且仅当在其定义的代码块中所有内容都执行完毕,原子触发器才可以提交更改,从而维持事务的完整性,事务的完整性是必要的条件。原子触发器的定义如下:

“`sql

CREATE OR REPLACE TRIGGER某位置_trigger_name

AFTER [ INSERT OR UPDATE OR DELETE ]

ON [ table_name ]

FOR EACH STATEMENT

[ DECLARE ]

BEGIN

// 你想要发生的某动作

END;

/


总之,我们可以选择我们需要的触发器类型并完成我们想要完成的任务,某种程度上,触发器的存在可以让我们的工作变得简单。

数据运维技术 » 深入Oracle触发器类型之旅(oracle触发器类型)