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;
即可
------解决思路----------------------
嗯嗯

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