熟悉Oracle触发器的类型:深入解析(oracle触发器类型)
Oracle触发器(Trigger)是一种用于在数据库的SQL语句操作的发生变化/更新时,自动触发一系列的操作。它可以联合表、视图、过程等对数据库数据进行操作。在数据库中,我们可以通过它来补偿一些没有完成的事务操作,如更新数据、删除数据等。
Oracle触发器有以下几种类型:
1. 表触发器(Table Trigger):表触发器是最常用的触发器,当在表中发生什么样的操作时,可以设置表触发器来处理,可以在对数据库中的表中进行DML操作或DDL操作时进行触发,比如新建表、修改表结构等。示例代码如下:
CREATE OR REPLACE TRIGGER tr_t1_new
AFTER INSERT ON t1
FOR EACH ROW
DECLARE
BEGIN
INSERT INTO t2 VALUES (:NEW.f1, :NEW.f2);
END;
2. 视图触发器(View Trigger):视图触发器不但可以用在视图上,表上也可以使用。视图触发器是对基表中发生某种事件或者对视图中发生某种事件可以设置触发器来处理。示例代码如下:
CREATE OR REPLACE TRIGGER tr_view_new
AFTER INSERT ON v_t1
FOR EACH ROW
DECLARE
BEGIN
INSERT INTO t2 VALUES (:NEW.f1, :NEW.f2);
END;
3. 登录触发器(Login Trigger):登录触发器可以在用户登录或注销时被触发,在初始化参数中可以指定初始化。示例代码如下:
CREATE OR REPLACE TRIGGER tr_login
AFTER LOGON ON DATABASE
DECLARE
userName VARCHAR2(10);
BEGIN
userName := USER;
IF userName ‘SYSTEM’
THEN
INSERT INTO t_login_log VALUES (userName,SYSDATE);
END IF;
END;
4. DDL触发器(DDL Trigger):DDL触发器是在数据库对象发生改变时触发,比如创建table、修改表等。示例代码如下:
CREATE OR REPLACE TRIGGER tr_table_create
AFTER CREATE ON DATABASE
DECLARE
tableName VARCHAR2(30);
BEGIN
tableName := ora_dict_obj_name;
INSERT INTO t_table_log VALUES (tableName,SYSDATE);
END;
以上就是关于Oracle触发器的几种类型,它们可以满足不同的要求来操作数据库中的数据,从而实现数据库的自动操作。