发挥Oracle触发器最大威力:学习不同类型触发器(oracle触发器类型)
Oracle触发器是Oracle数据库非常强大的功能,它能够在数据库范围内进行数据控制,并根据指定的逻辑条件自动触发动作。最充分发挥Oracle触发器的威力,就是熟练掌握不同类型的oracle触发器,并理解其各自的特点和使用场景。
一般来说,Oracle触发器分为表触发器和约束触发器。表触发器是指根据数据库表更新时,执行某些 SQL 语句。比如当插入或更新表someTable时,就可以创建一个INSERT或UPDATE语句的表触发器:
CREATE TRIGGER tr_someTable
AFTER INSERT OR UPDATE ON someTable
FOR EACH ROW
BEGIN
— trigger body
INSERT INTO logTable (desc, rowvalue)
VALUES (‘update someTable’, :NEW.columnName);
END;
约束触发器是指根据数据的完整性、约束条件未满足,而触发SQL语句的触发。比如,当发生约束违反时,就可以创建一个约束触发器:
CREATE OR REPLACE TRIGGER tr_someTable_name
BEFORE INSERT OR UPDATE OF name ON someTable
FOR EACH ROW
BEGIN
— trigger body
IF (checkNameOK(:NEW.name) ‘y’)
THEN
RAISE_APPLICATION_ERROR(-20001, ‘Invalid name’);
END IF;
END;
此外,Oracle还提供了许多其他特殊类型的触发器,比如说登入触发器、登出触发器、锁定触发器、服务器错误触发器等等。登入触发器是在用户成功登入某个数据库实例时,自动调用某段存储过程,用以进行审计等情况。例如:
CREATE OR REPLACE TRIGGER tr_sess_login
AFTER LOGON ON DATABASE
BEGIN
— trigger body
user_login_log(user);
END;
因此,发挥Oracle触发器最大威力,应该首先理解不同类型触发器、了解触发器的调用情况、把握正确的触发器创建技巧、熟悉相关触发器的优化潜在和性能提升技巧等。只有在这些基础上,才能够最大限度的发挥Oracle触发器的威力。