[firebase-br] >>>>> Help por favor , as transaçoes em DBExpress estão me enlouquecendo <<<<<<
Antonio Carlos
a.lima.silva em terra.com.br
Ter Jul 25 15:13:28 -03 2006
Meus amigos, na literatura é dito que usando DbExpress e Delphi voce
controla uma transação assim :
begin
try
TD.TransactionID := 1;
TD.IsolationLevel := xilREPEATABLEREAD;
SQLConnection1.StartTransaction(TD);
Sql4.Close;
.....
Sql4.ExecSQL;
SQLConnection1.Commit(TD);
except
on e: Exception do
begin
SQLConnection1.Rollback(TD);
MessageDlg('Erro XXXXXX : '+E.Message,mtError,[mbOK],0);
end;
end;
Isso funciona 100% se o banco esta sendo acessado apenas por um Client. So
que quando ocorre de haver mais de um Client a executar o mesmo
procedimento, da erro informando já haver um transação com esse ID
Ai fiz o seguinte :
var
i : integer;
begin
result := false;
try
i := 0;
while i = 0 do i := Random(65000);
TD.TransactionID := i;
TD.IsolationLevel := xilREPEATABLEREAD;
SQLConnection1.StartTransaction(TD);
Como podem ver a probabilidade de haver um mesmo ID para a transação é
dificil mas não impossível e a M é que ocorre.
Estou fazendo algo errado ? Fico grato se puderem me ajudar.
Obrigado.
Antonio
Mais detalhes sobre a lista de discussão lista