当前位置: 代码迷 >> Oracle开发 >> 触发器:当前行有更新,则批改当前行的某个字段。调用报错
  详细解决方案

触发器:当前行有更新,则批改当前行的某个字段。调用报错

热度:101   发布时间:2016-04-24 06:28:59.0
触发器:当前行有更新,则修改当前行的某个字段。调用报错
id是tab_mytab的主键
remark 是要修改的字段,当表的一行有更新时,则修改remark 值。触发器如下:

create or replace trigger tab_mytab_trigger
 before update on tab_mytab
 for each row
 declare
  s_id varchar2(20);
  begin
    select nvl(b.id,' ')
    into s_id 
    from tab_mytab b
    where
    b.id = :old.id
    and rownum=1;
    
    update tab_mytab db
    set db.remark = '修改'
    where
    db.id = s_id;
  end;

但是当update表tab_mytab 时,报ora-04091。
这是什么原因。
------解决思路----------------------
不用这么麻烦
create or replace trigger tab_mytab_trigger
 before update on tab_mytab
 for each row
  begin
    :new.remark := '修改';
  end;

即可
------解决思路----------------------
引用:
不用这么麻烦
create or replace trigger tab_mytab_trigger
 before update on tab_mytab
 for each row
  begin
    :new.remark := '修改';
  end;

即可

嗯嗯
------解决思路----------------------
触发器中不能自己操作自己表本身
1楼做法正确
  相关解决方案