Oracle 触发器的分类及使用技巧(oracle触发器类型)
Oracle是由一种关系式数据库管理系统开发的多用户和多任务的数据库服务,它可以提供数据的可靠存储、可信的选择、复杂更新和删除,以及复杂的查询服务。触发器是一种特殊的数据库对象,它可以在特定表或表之间发生操作时,自动执行一些或以上操作,为用户提供复杂的约束性或维护性得任务。
Oracle 触发器可以分为以下几类:
(1)行触发器
行触发器(Row Trigger)是指在表行上触发,一次只能处理一行数据,每次数据变化都可以触发触发器,并且可以指定触发事件,允许在更新、删除、插入触发。
例如创建一个表,对表中插入新记录触发一个行触发器:
CREATE TABLE tbl
(
c1 INTEGER,
c2 INTEGER
);
CREATE TRIGGER tr1
BEFORE INSERT ON tbl
REFERENCING NEW AS new
FOR EACH ROW
BEGIN
IF (:new.c1 > :new.c2) THEN
:new.c1 :=:new.c2;
END IF;
END;
(2)表触发器
表触发器(Table Trigger)是指在表上触发,可以更新多行数据,每次不仅可以对数据库记录进行处理,还可以约束多表之间的关系。
例如,可以创建一个表,对两个表的记录插入操作由一个表触发器负责:
CREATE TABLE t1 (c1 NUMBER);
CREATE TABLE t2 (c2 NUMBER);
CREATE TRIGGER tr1
AFTER INSERT ON t2
REFERENCING NEW AS new
BEGIN
INSERT INTO t1 VALUES(:new.c2);
END;
以上就是Oracle 触发器的两种不同类型。使用者在使用触发器之前,还需要了解其它一些技巧来提高使用效果:
1.应该尽量使用行触发器而不是表触发器,这样可以减少不必要的开销。
2.尽量避免将复杂的逻辑编写到触发器里,应该把逻辑处理放到存储过程或函数中,并在触发器中调用它们。
3.使用禁用/启用触发器的语句,可以有效地控制触发器的启用/禁用状态。
4.在使用触发器时,应尽可能地使用REFERENCING子句,以允许Oracle触发器更有效地获取所需的数据。
综上所述,Oracle触发器使用者可以按照此分类,并遵循一定的技巧去使用。这样不仅能够更好的增强数据库的完整性,而且能够更有效的利用触发器。