触发器(Trigger)

Posted Foreordination

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了触发器(Trigger)相关的知识,希望对你有一定的参考价值。

一、触发器

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

 

以上是关于触发器(Trigger)的主要内容,如果未能解决你的问题,请参考以下文章

mysql触发器trigger

oracle如何用sql查看触发器?

invoke和trigger的区别

mysql trigger 触发器

MySQL触发器使用详解

oracle中的trigger有几种啊