Oracle数据库中触发器的分类及用法(oracle触发器类型)
Oracle数据库中触发器是一类特殊的数据库对象,可以实现动态地检测数据库中的某些特定事件,并在事件发生时作出反应,以实现特定功能。根据不同的触发器启动时机,Oracle触发器分为三类:行触发器、表触发器和系统触发器。
行触发器是最常用的触发器类型,它是在DML操作完成时被激发,用于监视行级数据变化,从而控制对表的操作。常见的行触发器有:操作表记录时进行验证和矫正,使用下面的代码可以演示行触发器的功能:
DROP TRIGGER trig_stu_verify;
CREATE OR REPLACE TRIGGER trig_stu_verifyBEFORE INSERT OR UPDATE ON STUDENT
FOR EACH ROW BEGIN
IF (:NEW.age > 200) THEN RAISE_APPLICATION_ERROR(-20000,'Ooops! Age is out range.');
END IF;
END;
此触发器控制的是表student的数据记录插入和更新,以便验证时设置的age是否合理,不符合预期范围则直接抛出错误。
另一种触发器是表触发器,它是在DDL操作完成时被激发,用来监视表级数据变化,下面的代码演示了表触发器的功能:
CREATE OR REPLACE TRIGGER TRIG_TABLE_VERIFY
AFTER DROP ON STUDENTDECLARE
str VARCHAR2(50) BEGIN
str := 'The table '||:OLD.table_NAME||' has been deleted!'; INSERT INTO LOG_TABLE(MSG) VALUES (str);
END;
这段代码创建的表触发器用来跟踪student表的删除操作,当删除student表时会将表的名字插入LOG_TABLE中。
最后,Oracle数据库的系统触发器也是一种触发器类型,它是由Oracle数据库在特殊的时刻自动激发的,多用来在创建或删除用户、登陆数据库等事件发生时作出反应,以保持数据库正常运行。
总结而言,Oracle数据库中触发器分为行触发器、表触发器和系统触发器,它们在不同的应用场景中可以有效的完成相应的功能,常见的用法是用于监控表数据的变化,以及实现安全性访问控制等。