Äh, was weglassen ? Ganz ohne Transaktionen oder wie ?
Mit Firebird ?
Momentaner Stand ist jetzt so (Autocommit = false) :
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var i,j : Integer;
anfang : TTime;
answer : TModalResult;
begin
anfang := now;
Randomize;
for i := 1
to 2000
do begin
answer := idYes;
j := Random (25);
mem1.Lines.Add(IntToStr(i));
repeat
if not DB.Connected
then
DB.Open;
if not WriteTransaction.InTransaction
then
WriteTransaction.StartTransaction;
if not ReadTransaction.InTransaction
then
ReadTransaction.StartTransaction;
try
if DebugHook <> 0
then
WriteData (j,'
IDE '+ IntToStr(10 * i))
else
WriteData (j,IntToStr(10 * i));
if WriteTransaction.InTransaction
then
WriteTransaction.Commit;
if ReadTransaction.InTransaction
then
ReadTransaction.Commit;
except
answer := MessageBox(Self.Handle,'
Wiederholen ?','
Information',MB_ICONINFORMATION
or MB_YESNO);
end;
until (Answer = idYes)
or (Answer = idNo);
if Answer = idNo
then
Break;
end;
mem1.Lines.Add(IntToStr(i) + '
Diff. : '+ TimeToStr(now-anfang)+'
'+IntToStr (j));
end;
Was ist davon zu halten ? Sieht so aus, als würde das so laufen. Allerdings weiss ich nicht genau was da geschrieben wird, sofern "Wiederholen" gedrückt wird.