• oracle创建触发器(例:当有操作x_yonghu表指定字段并且字段有修改时,插入日志表)


    最近总发现用户表一些数据被删了,找不到原因,后面通过创建触发器来排查,当有操作x_yonghu表时,记录下来插入日志表中。

    create or replace trigger trg_x_yonghu_log_aft_modify
    
      after update OF shouji, zigezhenghao,zidianshurufa,shurufa on x_yonghu
    
      for each row
    
    declare
    
      pri_sqlcode  varchar2(100);
    
      pri_sqlerrm  varchar2(4000);
    
      pri_username varchar2(50);
    
      pri_ip       varchar2(100);
    
      pri_host     varchar2(200);
    
      pri_type     varchar2(100);
    
    begin
    
        pri_username := sys_context('userenv', 'session_user');
    
        pri_ip       := sys_context('userenv', 'ip_address');
    
        pri_host     := sys_context('userenv', 'host');
    
        pri_type     := 'update';
    
     case when updating('shouji') or updating('zidianshurufa') or updating('shurufa') then
    
        if :new.shouji != :old.shouji  or  :new.zidianshurufa != :old.zidianshurufa  or :new.shurufa != :old.shurufa then
    
          insert into x_yonghu_log
    
            (yonghuid_old,
    
             yiyuanid_old,
    
             zidianshurufa_old,
    
             shurufa_old,
    
             shouji_old,
    
             zigezhenghao_old,
    
             yonghuid_new,
    
             yiyuanid_new,
    
             zidianshurufa_new,
    
             shurufa_new,
    
             shouji_new,
    
             zigezhenghao_new,
    
             modify_host,
    
             modify_ip,
    
             modify_username,
    
             modify_type)
    
          values
    
            (:old.yonghuid,
    
             :old.yiyuanid,
    
             :old.zidianshurufa,
    
             :old.shurufa,
    
             :old.shouji,
    
             :old.zigezhenghao,
    
             :new.yonghuid,
    
             :new.yiyuanid,
    
             :new.zidianshurufa,
    
             :new.shurufa,
    
             :new.shouji,
    
             :new.zigezhenghao,
    
             pri_host,
    
             pri_ip,
    
             pri_username,
    
             pri_type);
    
        end if;
    
      end case;
    
    exception
    
      when others then
    
        begin
    
          pri_sqlcode := sqlcode;
    
          pri_sqlerrm := sqlerrm;
    
          insert into x_yonghu_log
    
            (modify_username,
    
             modify_ip,
    
             modify_host,
    
             modify_type,
    
             errormsg_sqlcode,
    
             errormsg_sqlerrm)
    
          values
    
            (pri_username,
    
             pri_ip,
    
             pri_host,
    
             pri_type,
    
             pri_sqlcode,
    
             pri_sqlerrm);
    
    end;
    
    end;
  • 相关阅读:
    vue : 无法加载文件 C:UsersXXXAppDataRoaming pmvue.ps1,因为在此系统上禁止运行脚本
    js全屏和退出全屏浏览器
    js 如何保存代码段并执行以及动态加载script
    计算年龄,精确到年月日
    js闭包问题
    构造函数和继承方法
    js 箭头函数不适用的场景
    获取一组数据的最大值和最小值
    地图
    json传输
  • 原文地址:https://www.cnblogs.com/ysaw/p/13362110.html
Copyright © 2020-2023  润新知