Oracle触发器的种类介绍(oracle触发器类型)

Oracle的触发器可以说是用来控制数据库更新的一个有效的功能,它可以使我们能够灵活建立复杂的数据结构,从而实现强有力的安全保护和有效的管理。Oracle的触发器有多种类型,如表触发器、列触发器、叠加触发器、Materialized view触发器,及在Oracle 10g出现的新触发器类型,如系统触发器等,下面就对各种触发器进行详细介绍。

1. 表触发器

表触发器是Oracle中最常用的触发器类型,主要是针对DML操作(即插入、修改和删除命令)装载,系统只要检测到这几种操作,触发器就会自动执行指定的用户预定义脚本。使用表触发器可以控制对表对象的数据更新,如果要创建表触发器,可以使用如下SQL语句:

“`SQL

CREATE TRIGGER trigger_name

BEFORE/AFTER INSERT/UPDATE/DELETE

ON table_name

FOR EACH ROW

BEGIN

–statement

END;


2. 列触发器

列触发器是一种特殊的表触发器,它只能针对表的某一列来定义触发器。当表中的某列数据发生改变时,触发器就会被触发,执行指定的用户脚本。列触发器的创建方式和表触发器基本一样,只需要在上面的SQL语句中指定某一列即可,如只针对表中c1列定义触发器,可以使用如下SQL语句:

```SQL
CREATE TRIGGER trigger_name
BEFORE/AFTER UPDATE OF c1
ON table_name
FOR EACH ROW
BEGIN
--statement
END;

3. 叠加触发器

叠加触发器指的是在表触发器或者列触发器上扩展的另外一种触发器,它可以同时针对表的插入和修改操作进行触发。叠加触发器需要定义两个触发器,一个触发器处理插入操作,另一个触发器将处理更新操作。同时,也可以将列触发器和表触发器结合使用,以定义叠加触发器,如下面创建一个对表table_name中c1列及对表的插入操作进行触发的叠加触发器:

“`SQL

CREATE OR REPLACE TRIGGER triger_name

BEFORE INSERT OR UPDATE OF c1 ON table_name

FOR EACH ROW

BEGIN

:NEW.c1 := NVL(:OLD.c1,1); –statement

END;


4. Materialized view触发器

Materialized view触发器是9i引入的一种特殊触发器,它特别针对Materialized view操作进行设计,可以应用于不同类型的Materialized view,如Fast Refresh、Complete Refresh和Next Refresh view等,当这些Materialized view被触发更新时,它也会被触发,从而实现相应的刷新操作,如下列SQL语句可以创建一个Materialized view触发器:

```sql
CREATE OR REPLACE TRIGGER trigger_name
AFTER REFRESH OF materialized_view
BEGIN
--statement
END;

5. 系统触发器

系统触发器是Oracle 10g引入的一种新触发器,主要是响应表和约束的DDL操作,系统触发器会自动触发,例如在创建表时会自动启用某些约束。使用如下SQL语句可以创建系统触发器:

“`SQL

CREATE TRIGGER trigger_name

AFTER DDL

ON SCHEMA

BEGIN

–statment

END;


以上是Oracle中常用的触发器类型的介绍,Oracle的触发器可以有效的控制表中DML操作和DDL操作,可以实现任务的负责和有效管理,更加方便我们

数据运维技术 » Oracle触发器的种类介绍(oracle触发器类型)