码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2020-07-22 20:05:13      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:指定字段   varchar   values   after   use   replace   value   uid   err   

最近总发现用户表一些数据被删了,找不到原因,后面通过创建触发器来排查,当有操作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;

 

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

标签:指定字段   varchar   values   after   use   replace   value   uid   err   

原文地址:https://www.cnblogs.com/ysaw/p/13362110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!