一、触发器
有点类似AOP里的拦截器,触发器不能传递参数,也不能输出参数,也不能显式调用,只有当满足触发器条件的时候Oracle会自动调用。
触发器:
1、语句级别的触发器:CRUD操作
2、行级别的触发器
3、系统级别的触发器:数据库的关闭,启动
4、用户事件的触发器:进行drop,alter,create时候触发
二、触发器的创建
--创建行级别的触发器 CREATE OR REPLACE trigger trigger_update_product_table AFTER UPDATE ON product_table FOR EACH ROW --每更新一行,就触发一次 BEGIN --Oracle里面对触发器提供了特殊的对象:NEW :OLD来访问更新前后的数据 DBMS_OUTPUT.put_line(‘更新后‘||:NEW.name);--orcle使用||符号链接字符串而已,相当于java中的+连接字符串 DBMS_OUTPUT.put_line(‘更新前‘||:OLD.name); IF UPDATING THEN END IF; IF INSETING END;
--创建表级别的触发器 CREATE OR REPLACE trigger trigger_update_product_table AFTER UPDATE ON product_table BEGIN --表级别触发器里面,不允许使用:NEW :OLD变量 --DBMS.OUTPUT.put_line(‘更新后:‘||:NEW.name); --DBMS.OUTPUT.put_line(‘更新前:‘||:OLD.name); END;