Oracle 触发器给出错误 - 检测到并回滚活动的自治事务

Oracle trigger is giving error - active autonomous transaction detected and rolled back

我写了一个触发器,它在最后调用一个过程,过程有一个提交语句。 当我执行触发器时,它给我错误“无法在触发器中提交”。 然后我声明了 PRAGAMA AUTONOMUS_TRANSACTION 但这也给出了错误“检测到并回滚了主动自主事务”,“触发器执行期间出错”

 CREATE OR REPLACE TRIGGER  Test_Ord_Update   
    AFTER  
    insert or update on test1  
    for each row  
    
    declare
      PRAGMA AUTONOMOUS_TRANSACTION;
      l_exst number(1);
      v_id NUMBER (5);
    begin
    
     merge into test2 b
            USING dual a
            on (:new.id = b.id)
            when matched then update set
              b.price1 = :new.price1,
             b.price2 = :new.price2
           when not matched then insert (id, price1, price2)
             values (:new.id, :new.price1, :new.price2);
          select id into v_id from test2 where price1 =  :new.price1;
          LOAD_PRICE(v_id);
    end;

每当我们在有提交语句的触发器中调用子程序时,我们必须需要在我们调用子程序的行之后写一个提交。如下图

创建或替换触发器Test_Ord_Update
之后
在 test1
上插入或更新 每行

declare
  PRAGMA AUTONOMOUS_TRANSACTION;
  l_exst number(1);
  v_id NUMBER (5);
begin

 merge into test2 b
        USING dual a
        on (:new.id = b.id)
        when matched then update set
          b.price1 = :new.price1,
         b.price2 = :new.price2
       when not matched then insert (id, price1, price2)
         values (:new.id, :new.price1, :new.price2);
      select id into v_id from test2 where price1 =  :new.price1;
      LOAD_PRICE(v_id);
      COMMIT;
end;