大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说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;
代码100分
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7185.html