Transações com dbexpress

Delphi

20/04/2006

Gostaria da opinião de todos para a seguinte situação:

var
TudoOK: Boolean;
Transacao: TTransactionDesc;
begin
TudoOK:= False;
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:= xilReadCommitted;
SQLConnection1.StartTransaction(Transacao);
// Aplicando os updates
if ClientDataSet1.ApplyUpdates(0) = 0 then
if ClientDataSet2.ApplyUpdates(0) = 0 then
if ClientDataSet3.ApplyUpdates(0) = 0 then
if ClientDataSet4.ApplyUpdates(0) = 0 then
TudoOK:= True;
// Note que TudoOK só será true se não houver nenhum erro em nenhum dos Updates
if TudoOK then
begin
SQLConnection1.Commit(Transacao);
ShowMessage(´Atualizações OK.´);
end
else
begin
SQLConnection1.Rollback(Transacao);
ShowMessage(´Ocorreram erros. Alterações descartadas.´);
end;
end;

Considerando que cada ApplyUpdates(0) gera uma transação (executando um commit ou Rollback no SGDB) e que SQLConnection1.Commit(Transacao) também gera um commit.
Pergunto: No caso de todas as transações emitidas por ApplyUpdates(0) terem sidas commitadas, a última transação (Commit(Transacao)) não estaria somente sobrecarregando o SGBD ? Existe alguma maneira de evitar isto ?


Urquizo

Urquizo

Curtidas 0
POSTAR