Oracle中针对一张表建立触发器,并且触发器也处理同一张表的数据(ora-04091 错误)

当我们针对一张表建立触发器的时候,不小心就爆出来了一个ora-04091错误的时候,不要慌,也不要想着建立一个新的试图或者是临时表,这样做都太麻烦了,下面我上一个简单明了的方法

create or replace trigger OrderJionTran1
before  UPDATE on yw_tranaviation
for each row 
  
declare
     integrity_error  exception;
     errno            integer;
     errmsg           char(200);
     pragma autonomous_transaction;
begin
    update yw_tranaviation t set t.numbered=:new.numbered,t.sweighted=:new.sweighted,t.bulksed=:new.bulksed
     where t.pretranid= :old.sid;
     commit;
exception
    when integrity_error then
       raise_application_error(errno, errmsg);
end ;

注意这两个红色的地方,因为对于同一张表进行触发器操作的时候是在同一事务中,所以会报错,我们申明一个新的事务,并且手动提交事务,一切就ok了。下面是我借鉴的原图

 

相关文章:

  • 2022-12-23
  • 2022-01-03
  • 2021-11-30
  • 2022-12-23
  • 2021-09-09
  • 2021-11-24
  • 2021-12-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-19
  • 2021-11-17
  • 2021-11-04
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案