zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    在ASP.NET中使用FusionCharts图表
    IE 输入baidu就死掉
    以WebServices方式上传图片
    GUID System.Guid .
    记录一个静态类的静态属性
    [转]通用分页存储过程
    如何解决“呈现控件时出错”的问题
    C#中调用SQL存储过程(带输入输出参数的例子)
    Rose实例:构造银行业务模型[转]
    Mylove net 我们手里的金钱只是保持自由的一种工具!卢梭
  • 原文地址:https://www.cnblogs.com/ysaw/p/13362110.html
Copyright © 2011-2022 走看看