触发器记录对表记录操作

这篇博客介绍如何通过创建触发器来监控并记录数据库表中的特定操作,确保满足条件的动作会被详细记录在日志表中。
摘要由CSDN通过智能技术生成


这里记录满足一定条件的操作,并将操作记录下来。

创建记录日志表

create table emp_trace_log(
   empno number, -- 主键
   column_name varchar2(20), -- 被修改列名
   old_value varchar2(200),  -- 修改前旧值
   new_value varchar2(200),  -- 修改后新值
   update_date date default sysdate -- 修改时间,默认系统当前时间
);

创建触发器

create or replace trigger tr_up_ck
  -- 删除或修改操作前
  before delete or update on scott.emp
  FOR EACH ROW --说明创建的是行级触发器 
  -- 触发条件,comm列值非空时
  when (old.comm is not null)
BEGIN
  case
    -- 修改列数据
    when updating('ename') then
      if :old.ename <> :new.ename then
        insert into emp_trace_log
          (empno, column_name, old_value, new_value)
        values
          (:old.empno, 'ENAME', :old.ename, :new.ename);
      end if;
    when updating('job') then
      if :old.job <> :new.job then
        insert into emp_trace_log
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值