• Oracle 触发器


    转自慕课网:http://www.imooc.com/video/8744
    触发器的定义
    每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动的执行触发器中定义的语句序列
    (select语句没有触发器)

    在emp 表中插入到一条语句的时候触发一个触发器,触发器打印一句话”成功插入新员工

    Create trigger saynewemp //创建一个名为saynewemp的触发器
    after insert //在insert语句执行完之后执行该触发器
    on emp //该触发器作用在那个表上
    declare//程序中是否需要使用变量,不需要时省略
    begin
    dbms_output.put_line('成功插入新员工')
    end;
    /

    类似Java中的监听器


    应用场景
    1 复杂的安全性检查
    2 数据的确认
    3 数据库审计 //跟踪数据库中的数据的操作记录
    4 数据的备份和同步


    触发器类型
    1 语句级的触发器(没有for each row 语句则表示是语句级的触发器)
    在指定的操作之前或之后执行一次,不管这条语句影响了多少行


    2 行级触发器
    触发语句作用的每一条记录都被触发.在行级触发器中使用 :old 和 :new 伪记录变量,识别值的状态

    语句级的触发器针对的是表
    行级触发器针对的是行

    insert into emp10 select * from emp where deptno = 10;//将emp表中deptno=10的员工插入到emp10表中(假设可以查出三条记录)
    如果是语句触发器则上条SQL会出发一次触发器
    而行级触发器会被触发三次



    语法 []可有可无
    create [or replace] trigger 触发器名称 //创建一个触发器
    {before | after}
    {delete|insert|update[of 列名]}//update后跟列名表示只有update某一列时才会触发触发器
    on 表名
    [for each row[when(条件)]]
    plsql 块

     

  • 相关阅读:
    哈希表
    java读写xml文件
    Java学习之Hessian通信基础
    DevExpress 中 gridView编辑单元格,失去焦点后,内容继而消失
    DevExpress控件的GridControl控件小结
    Spring 架构图
    WebLogic和Tomcat的区别
    EJB到底是什么,真的那么神秘吗??
    C# 枚举类型
    关于C#的Main(String[] args)参数输入问题
  • 原文地址:https://www.cnblogs.com/miye/p/7106609.html
Copyright © 2020-2023  润新知