Transação com dbExpress
16/02/2006
0
Se no momento que é dado um insert (Ex. SimpleDataSet1.Insert) já pega a transação depois dá um post + ApplyUpdates + Commit ou conforme o código abaixo seria mais conveniente, ou seja, depois que realizar o post no dataset:
.....
SimpleDataSet1.Insert;
SimpleDataSet1.FieldByName(´Codigo´) .AsInteger:= 1;
SimpleDataSet1.FieldByName(´nome´) .AsString:= ´Teste´;
if not SQLConnectionX.InTransaction then
begin
TD.IsolationLevel := xilREADCOMMITTED;
TD.TransactionID := 1;
SQLConnectionX.StartTransaction(TD);
try
SimpleDataSet1.ApplyUpdates(0);
SQLConnectionX.Commit(TD);
except
on E: Exception do
begin
SQLConnectionX.Rollback(TD);
raise Exception.Create(E.Message);
end;
end;
end;
Obs: Existe algum limite de transações que podem estar em abertas ao mesmo tempo (Ex. 20 estações de trabalho com 20 transações ao mesmo tempo). Se tiver muitas transações em abertas a performance do banco poderá diminuir ?
Mcd
Posts
16/02/2006
Mcd
SimpleDataSet1.Insert;
SimpleDataSet1.FieldByName(´Codigo´) .AsInteger:= 1;
SimpleDataSet1.FieldByName(´nome´) .AsString:= ´Teste´;
if not SQLConnectionX.InTransaction then
begin [/i:65ec2c423f]
No codigo anterior faltou mais o post
SimpleDataSet1.Insert;
SimpleDataSet1.FieldByName(´Codigo´) .AsInteger:= 1;
SimpleDataSet1.FieldByName(´nome´) .AsString:= ´Teste´;
[b:65ec2c423f]SimpleDataSet1.Post; [/b:65ec2c423f]
if not SQLConnectionX.InTransaction then
16/02/2006
Caduengenheiro
TD.IsolationLevel := xilCUSTOM;
21/02/2006
Mcd
begin
TD.IsolationLevel := xilREADCOMMITTED;
TD.TransactionID := 1;
SQLConnectionX.StartTransaction(TD);
try
....[/b:19c5603e9a]
Alguem sabe quais os recursos que o banco de dados aloca no momento que eu pego uma nova transação, assim como o codigo acima ?
Clique aqui para fazer login e interagir na Comunidade :)