Oracle 触发器的分类与功能介绍(oracle触发器类型)
触发器是一种特殊的存储过程,可以根据用户定义的条件在满足条件时自动被触发,而无需用户的干预。Oracle客户端可以使用触发器执行在特定时间点或特定事件发生时自动执行的操作。
根据触发器触发类型和实现方式,Oracle触发器可以分为如下几种:
①,行级触发器,当发生Insert,Delete 或者 Update时(或批量操作),行级触发器会被触发,具体的执行方式如下:每次操作(或批量操作)给定的一行数据,会被触发器捕获,然后使用程序执行特定的操作,以实现用户定制的业务逻辑。
例如:
CREATE OR REPLACE TRIGGER UPDATE_USER
BEFORE UPDATE ON t_user
FOR EACH ROW
BEGIN
UPDATE other_table SET other_table.user_name= :NEW.user_name WHERE other_table.id = :NEW.id;
END UPDATE_USER;
②, 游标触发器,游标触发器可以在用户普通语句执行完毕后被触发,最常被用于工程性质的默认操作时有效,具体的实现方式如下:使用Declare ..Cursor 语句,来定义游标容器,当对应的普通操作语句被执行完毕后,触发器会根据定义的游标模板进行操作。
例如:
CREATE OR REPLACE TRIGGER CURSOR_TRIGGER
AFTER UPDATE ON t_user
BEGIN
DECLARE
CURSOR c1 IS
SELECT user_name FROM other_table
WHERE other_table.id = :NEW.id;
old_username_1 VARCHAR2(100);
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO old_username_1;
EXIT WHEN c1%NOTFOUND;
UPDATE other_table SET user_name = :NEW.user_name WHERE user_name= old_username_1;
END LOOP;
END;
③,结构级触发器,指的是当发生对库表的DDL操作(Create, Alter, Drop等)时,会触发的触发器,此类触发器主要用于在特定的DDL发生时,执行我们定义的操作以实现特定的数据逻辑保护。
例如:
CREATE OR REPLACE TRIGGER DROP_USER
AFTER DROP ON t_user
BEGIN
INSERT INTO LOG_TABLE(log_message) VALUES (‘t_user表被删除,用户:’ || :OLD.user_name);
END;
以上就是Oracle触发器的分类以及部分触发器的具体实现示例,采用触发器可以使得数据库操作变得更加智能,大大提高了数据库的操作效率,节省了大量的人力资源和时间开销。