一、触发器

有点类似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;

 

版权声明:本文为drq1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/drq1/p/8602262.html