Fork me on GitHub

Oracle数据库之触发器

一、触发器

有点类似AOP里的拦截器,触发器不能传递参数,也不能输出参数,也不能显式调用,只有当满足触发器条件的时候Oracle会自动调用。

触发器:

  1、语句级别的触发器:CRUD操作

  2、行级别的触发器

  3、系统级别的触发器:数据库的关闭,启动

  4、用户事件的触发器:进行drop,alter,create时候触发

二、触发器的创建

1
2
3
4
5
6
7
8
9
--创建行级别的触发器CREATE OR REPLACE trigger trigger_update_product_table
AFTER UPDATEON product_tableFOR 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 INSETINGEND;
1
2
3
4
5
--创建表级别的触发器CREATE OR REPLACE trigger trigger_update_product_table
AFTER UPDATEON product_tableBEGIN
--表级别触发器里面,不允许使用:NEW :OLD变量
--DBMS.OUTPUT.put_line('更新后:'||:NEW.name);
--DBMS.OUTPUT.put_line('更新前:'||:OLD.name);END;