Fórum Varios Begintrans, qual a ordem de Commit ? #352172
21/01/2008
0
Estou usando D6 com vários BD access com ADO e em algumas situações eu insiro dados em 3 BDs diferentes que são interligados.
Se eu inicio as transações assim:
ADOConection1.BeginTrans;
ADOConection2.BeginTrans;
ADOConection3.BeginTrans;
Existe uma ordem correta de Commit ?
Eu estou tendo problemas pois, atualiza BD2 e BD3 e não em BD1, o que tem me gerado inconsistencia de dados.
Agradeço qualquer ajuda.
Quadrado
Se eu inicio as transações assim:
ADOConection1.BeginTrans;
ADOConection2.BeginTrans;
ADOConection3.BeginTrans;
Existe uma ordem correta de Commit ?
Eu estou tendo problemas pois, atualiza BD2 e BD3 e não em BD1, o que tem me gerado inconsistencia de dados.
Agradeço qualquer ajuda.
Quadrado
Quadrado
Curtir tópico
+ 0
Responder
Posts
21/01/2008
Edilcimar
depende da dependência entre tabelas, se tabela2 é dependente de tabela1, vc deve comitar primeiro a tabela1 e depois a tabela2
Responder
Gostei + 0
21/01/2008
Djjunior
sei não, não seria o caso de vc criar uma função exclusiva para dar os comiits seria algo do tipo:
ai vc troca todos seus commits por este comando, vc ainda poderia só por termos de padronização criar outra procedure em que vc passaria por parametro a conexão e daria commit somente nela
procedure Commit; begin if ADOConection1.InTransaction then ADOConection1.Commit; if ADOConection2.InTransaction then ADOConection2.Commit; if ADOConection3.InTransaction then ADOConection3.Commit; end;
ai vc troca todos seus commits por este comando, vc ainda poderia só por termos de padronização criar outra procedure em que vc passaria por parametro a conexão e daria commit somente nela
procedure Commit(conexcao: TADOConnection); override; begin if (conexcao = ADOConection1) and (ADOConection1.InTransaction) then ADOConection1.Commit; if (conexcao = ADOConection1) and (ADOConection2.InTransaction) then ADOConection2.Commit; if (conexcao = ADOConection1) and (ADOConection3.InTransaction) then ADOConection3.Commit; end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)