掌握oracle触发器分类及用法(oracle触发器类型)
Oracle触发器,指的是由Oracle响应特定的更改,而无需用户干涉而自动触发一些动作的一类程序。它属于数据库编程的组成部分,能够有效的解决当表的记录达到某些特定的条件或规定时,自动执行相应的行为。由于它可以实现自动化,不断完善自动执行,编写出特定应用案例来解决问题,是完成数据库系统应用最常用的方法之一。
Oracle触发器可以分成行级别触发器、表级别触发器以及数据库级别触发器三大类。
行级别触发器(Row-Level Trigger)是最常用的ORACLE触发器,它只有当表中某行的某些值被改变时才会被出发;比如当更新某行时可以更新表中其他行。
例如:
CREATE OR REPLACE TRIGGER update_table
BEFORE UPDATE ON abc
FOR EACH ROW
BEGIN
UPDATE xyz SET new_column = :NEW.old_column
WHERE id = :NEW.id;
END;
/
表级别触发器(Table-Level Trigger)是在Before或After更新一表时被出发,在触发行(Triggering Row)中进行update、insert、delete操作时被出发。
例如:
CREATE OR REPLACE TRIGGER check_table
AFTER UPDATE OR INSERT OR DELETE ON abc
BEGIN
IF ( UPDATE (age) OR INSERT (age) )
THEN
INSERT INTO log_table (‘table_abc’, User, SYSTIMESTAMP);
END IF;
END;
/
数据库级别触发器(Database-Level Trigger)是在数据库中任何表的任何Row或者任何表的某些Column被改变时就会被触发,它用于记录数据库中任意数据变动,但它有一定局限性,因为它无法判断变动的行和列,所有数据都是统计到一起的,无法用于具体的任务。
例如:
CREATE OR REPLACE TRIGGER check_dbs
AFTER UPDATE OR INSERT OR DELETE
ON database
BEGIN
INSERT INTO log_table (‘database_dbs’, User, SYSTIMESTAMP);
END;
/
总而言之,在实际应用中,ORACLE触发器的用法很多,例如:记录每次修改的字段名称和时间;维护一些约束;防止一些特定的非法操作;实现数据的一致性;统计数据表中改动的记录数等。对于低热量存储,开发软件应用程序,ORACLE触发器也是非常有用的,使用它可以更好地为数据库系统提供自动化服务,提高系统的运行效率。