这样不可能成功,我觉得。如果要两个数据库在同一个Transaction中,MTS应该是一个不错的选择。

解决方案 »

  1.   

    if not database1.InTransaction then
      database1.starttransaction
    if not database2.InTransaction then
      database2.starttransactiontry
      query5.close;
      query5.sql.clear;
      query5.sql.add(sss5);
      query5.execsql;  query1.close;
      query1.sql.clear;
      query1.sql.add(sss1);
      query1.execsql;  query2.close;
      query2.sql.clear;
      query2.sql.add(sss2);
      query2.execsql;  query3.close;
      query3.sql.clear;
      query3.sql.add(sss3);
      query3.execsql;  query4.close;
      query4.sql.clear;
      query4.sql.add(sss4);
      query4.execsql;
      database1.commit;
      database2.commit;
    except
    //为保险
      if database1.InTransaction then
        database1.rollback;
      if not database2.InTransaction then
        database2.rollback;
    end;上述代码未经调试!
      

  2.   

    if database1.InTransaction  then
      database1.rollback;
    database1.starttransaction
      try
        query5.close;
        query5.sql.clear;
        query5.sql.add(sss5);
        query5.execsql;
        if database2.InTransaction  then
           database2.rollback;
        database2.sarttransaction
        try
          query1.close;
          query1.sql.clear;
          query1.sql.add(sss1);
          query1.execsql;      query2.close;
          query2.sql.clear;
          query2.sql.add(sss2);
          query2.execsql;      query3.close;
          query3.sql.clear;
          query3.sql.add(sss3);
          query3.execsql;    except
          database2.rollback;
          database1.rollback;
        end;    query4.close;
        query4.sql.clear;
        query4.sql.add(sss4);
        query4.execsql;
        database2.commit;
        database1.commit;
      except
        database2.rollback;
        database1.rollback;
      end;