现在在oracle中我通过odbc建立了连接mysql的通信,通信正常可以查询mysql中的数据,也可以通过sql语句向mysql中插入数据但是通过触发器向mysql中插入数据时会报ora-02047无法连接正在运行中的分布式事务处理,这该如何解决。

解决方案 »

  1.   

    #1:这个也不行。我放到存储过程中也一样
    #2:这个事务模式不一样是什么。oracle的事务和mysql的事务模式一致?怎么设置。。
      

  2.   


    这个是oracle中表的触发器,向oracle中表插入数据同时向mysql中的表插入数据create or replace trigger tr_insert_after_bass_sms
    after insert ON bass_sms
    FOR EACH ROW
    BEGIN
     insert into "test1"@testlocal("name","dec") values ('你好','啊啊哦');
    END;
      

  3.   

    insert into "test1"@testlocal("name","dec") values ('你好','啊啊哦');这个用的不是dblink吗你把这个写到过程中或者函数中看看可以执行吗?
      

  4.   

    CREATE OR REPLACE PROCEDURE tests
    Authid Current_User
    is
    begin
     insert into "test1"@testlocal("name","dec") values ('你好','啊啊哦');
    commit;end tests;
    这个存储过程单独测试是没有问题的,但是通过触发器调用这个存储过程还是不行
      

  5.   

    触发器:create or replace trigger tr_insert_after_bass_sms
    after insert ON bass_sms
    FOR EACH ROW
    BEGIN
    tests;
    END;
      

  6.   

    估计是因为触发器不能COMMIT的原因。
      

  7.   

    估计是因为触发器不能COMMIT的原因。
      

  8.   

    估计是因为触发器不能COMMIT的原因。
      

  9.   

    嗯 解决了,我用触发器中调存储过程,在执行insert之前加入了commit,然后才执行的insert语句
      

  10.   

    请问commit加在具体哪里?我也有同样的问题
      

  11.   

    在执行向mysql中插入数据的sql语句之前,好像是向mysql插入数据和向oracle插入数据不属于同一事务,执行触发器时要将oracle中的结果提交。
      

  12.   

    我也是遇到这个问题,执行insert之前加入了commit,报错:commit不能在触发器中。请问具体怎么解决的,能贴出来吗