• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    oracle监控某表变动触发器例子(监控增,删,改)

    使用oracle触发器 实现对某个表的增改删的监控操作,并记录到另一个表中。

    代码:

    复制代码 代码如下:

    create or replace trigger test_trigger 
      before insert or update or delete on test_table 
      for each row 
    declare 
      v_id        varchar2(30); 
      v_bdlb      varchar2(1); 
      v_jgdm      VARCHAR2(12); 
      v_jgmc      VARCHAR2(60); 
      v_gajgmc    VARCHAR2(60); 
      v_gajgwsmc  VARCHAR2(30); 
      v_jz        VARCHAR2(30); 
      v_ksdwsdwmc VARCHAR2(30); 
    begin 
      /* 
        插入时往历史表中存放的是新插入的数据. 
        修改时往历史表中存放的是修改后的数据. 
        删除时往历史表中存放的是删除之前的数据. 
      */ 
      select org_id_s.nextval into v_id from dual; -- 利用seq生成主键 
      v_jgdm     := :new.row_id; 
      v_jgmc     := :new.dept_name; 
      v_gajgmc   := :new.dept_name; 
      v_gajgwsmc := :new.bmjc; 
      v_jz       := substr(v_jgdm, 7, 2); 
      if '2' = :new.depttype then 
        v_ksdwsdwmc := 'shiju'; 
      else 
        if '03' = v_jz then 
          v_ksdwsdwmc := 'zhi'; 
        elsif '05' = v_jz then 
          v_ksdwsdwmc := 'xing'; 
        elsif '51' = v_jz then 
          v_ksdwsdwmc := 'she'; 
        else 
          v_ksdwsdwmc := 'qita'; 
        end if; 
      end if; 

      if inserting then 
        v_bdlb := '1'; 
        insert into test_table_h 
          (id, bdlb, jgdm, jgmc, gajgmc, gajgwsmc, jz, ksdwsdwmc) 
        values 
          (v_id, 
           v_bdlb, 
           v_jgdm, 
           v_jgmc, 
           v_gajgmc, 
           v_gajgwsmc, 
           v_jz, 
           v_ksdwsdwmc); 
      elsif updating then 
        v_bdlb := '2'; 
        insert into test_table_h 
          (id, bdlb, jgdm, jgmc, gajgmc, gajgwsmc, jz, ksdwsdwmc) 
        values 
          (v_id, 
           v_bdlb, 
           v_jgdm, 
           v_jgmc, 
           v_gajgmc, 
           v_gajgwsmc, 
           v_jz, 
           v_ksdwsdwmc); 
      else 
        v_bdlb     := '3'; 
        v_jgdm     := :old.row_id; 
        v_jgmc     := :old.dept_name; 
        v_gajgmc   := :old.dept_name; 
        v_gajgwsmc := :old.bmjc; 
        v_jz       := substr(v_jgdm, 7, 2); 
        if '2' = :old.depttype then 
          v_ksdwsdwmc := 'shiju'; 
        else 
          if '03' = v_jz then 
            v_ksdwsdwmc := 'zhi'; 
          elsif '05' = v_jz then 
            v_ksdwsdwmc := 'xing'; 
          elsif '51' = v_jz then 
            v_ksdwsdwmc := 'she'; 
          else 
            v_ksdwsdwmc := 'qita'; 
          end if; 
        end if; 
        insert into test_table_h 
          (id, bdlb, jgdm, jgmc, gajgmc, gajgwsmc, jz, ksdwsdwmc) 
        values 
          (v_id, 
           v_bdlb, 
           v_jgdm, 
           v_jgmc, 
           v_gajgmc, 
           v_gajgwsmc, 
           v_jz, 
           v_ksdwsdwmc); 
      end if; 
    end;

    您可能感兴趣的文章:
    • Oracle中触发器示例详解
    • 详解oracle中通过触发器记录每个语句影响总行数
    • Oracle触发器trigger详解
    • Oracle触发器用法实例详解
    • Oracle创建主键自增表(sql语句实现)及触发器应用
    • Oracle中游标Cursor基本用法详解
    • Oracle存储过程游标用法分析
    • Oracle显示游标的使用及游标for循环
    • 快速学习Oracle触发器和游标
    上一篇:45个非常有用的 Oracle 查询语句小结
    下一篇:oracle 数据库隔离级别学习
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    oracle监控某表变动触发器例子(监控增,删,改) oracle,监控,某表,变动,触发器,