Oracle中的触发器类型探究(oracle触发器类型)

Oracle是一款常用的关系型数据库,其中触发器是这款数据库入门必备的知识点,而触发器的类型也是十分的重要的,本文主要就Oracle中的触发器类型进行探究。

Oracle中的触发器分为四种类型,分别为表级触发器、行级触发器、BEFORE触发器以及AFTER触发器,下面将详细的介绍。

1.表级触发器:也称作DDL触发器,主要用来响应表的DDL (Data Definition Language) 语句,比如在数据库中建立一张新表,或者删除一张表,都会触发DDL触发器,在此基础上,可以实现一些自动化操作。

例如,在创建表table_name时,自动创建一个存储过程:

CREATE OR REPLACE TRIGGER create_table

BEFORE CREATE ON DATBASE

BEGIN

EXECUTE IMMEDIATE ‘CREATE OR REPLACE PROCEDURE p_table_name$_limit as begin null; end;’;

END;

/

2.行级触发器:主要用来响应表的DML (Data Manipulation Language)语句,行级触发器可以在数据库中的表中的某些行发生变化时触发,也可以对一些语句变化做出一些反应。

例如,在表table_name中添加一行记录时,在添加该行之前,自动更新一个字段:

CREATE OR REPLACE TRIGGER tr_modify

BEFORE INSERT OR UPDATE ON table_name

FOR EACH ROW

BEGIN

IF :new.id is not NULL

THEN

:new.field_time := SYSDATE;

END IF;

END;

/

3.BEFORE触发器:也叫前置触发器,意思是在触发的事件发生前就被触发,它可以先行做些前置操作,比如在发生某一操作之前验证等。

例如在执行insert、update、delete等操作前,先记录操作者的账号和日期:

CREATE OR REPLACE TRIGGER tr_record

BEFORE DELETE OR INSERT OR UPDATE ON tablename

FOR EACH ROW

BEGIN

INSERT INTO table_log (user_name, action_date)

VALUES (USER, SYSDATE);

END;

/

4.AFTER触发器:也叫后置触发器,意思是在触发的事件发生后就被触发,它可以先行做些后置操作,比如迁移数据等。

例如,在insert操作完成后,记录被添加的行的内容:

CREATE OR REPLACE TRIGGER tr_mentioned

AFTER INSERT ON tablename

FOR EACH ROW

BEGIN

INSERT INTO log_table (id_column,value)

VALUES (:new.id_field,:new.value_field);

END;

/

总的来说,Oracle中的触发器主要有四类:表级触发器、行级触发器、BEFORE触发器以及AFTER触发器,它们在Oracle的应用中都发挥着重要的作用,只要掌握这些触发器的使用,就可以大大提高工作效率和实现一些自动化操作。


数据运维技术 » Oracle中的触发器类型探究(oracle触发器类型)