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


    当我们针对一张表建立触发器的时候,不小心就爆出来了一个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了。下面是我借鉴的原图

  • 相关阅读:
    自己开发网站全文检索系统
    中国摇滚二十年(经典100首歌曲)
    有一首歌
    Snoopy.class.php使用手册
    wp-Syntax 插件使用方法
    rabbitmq使用
    小程序相关功能的实现
    知识链接
    celery使用
    阿里云服务器部署项目注意事项
  • 原文地址:https://www.cnblogs.com/xiaoch/p/2644401.html
Copyright © 2020-2023  润新知