Oracle触发器:认识各类型触发器(oracle触发器类型)
Oracle触发器是一种特殊类型的存储过程,可以基于数据库表上的insert/update/delete操作来触发。它的主要用途是自动识别新的表变化,并做出相应的改变。Oracle数据库支持多种触发器类型,并使用它来执行业务需求时会有所不同。
首先,行级触发器通常用于在插入/删除/更新行时运行代码。在老式Oracle中,使用BEFORE INSERT/DELETE/UPDATE触发器。在11g中,AFTER有三个类型,可以使用AFTER INSERT/DELETE/UPDATE模式,意味着可以检查“ 新值”或“ 旧值”:
BEFORE触发器:
CREATE OR REPLACE TRIGGER before_notification_trigger
BEFORE INSERT ON noti_tableFOR EACH ROW
BEGIN -- Do some action
END;
AFTTER触发器:
CREATE OR REPLACE TRIGGER after_notification_trigger
AFTER INSERT ON noti_tableFOR EACH ROW
BEGIN -- Do some action
END;
另外,表级触发器运行于表上插入多行时,可以触发一次运行代码,而无需针对每一行 修改,此类触发器在批量处理中特别有效。它的语法如下:
CREATE OR REPLACE TRIGGER before_notif_table_trigger
BEFORE INSERT ON notif_tableFOR EACH ROW
BEGIN -- Do some action
END;
再有,行级触发器还分为两类:CONTEXT触发器和异常触发器。CONTEXT触发器可以通过“ GET CONTEXT ”函数获取各种信息,包括SQL模式、事务ID、客户端信息等,而异常触发器可以捕获异常和错误,并介入错误处理流程,以防止崩溃。
最后,Oracle还支持统计触发器来监控表的状态,它会监视特定统计信息的变化,如行的总数或其他变化,如果满足给定的条件,则该触发器会被触发:
CREATE OR REPLACE TRIGGER stat_notif_table_trigger
AFTER STATISTICS ON notif_tableARE COLLECTED
BEGIN -- Do some action
END;
总之,Oracle触发器是一种强大的功能,可以在表上插入/删除/更新数据时自动执行一些特定动作。Oracle有很多类型的触发器,用户可以根据自己的需求和业务需求来实现特定的操作。