Ich habe ein Verständnisproblem. Ich füge mittels
Append()
und
Post()
eine neue Zeile in einer Tabelle ein. Davor sage ich
myConnection.StartTransaction()
. Nehmen wir an, irgendwo kommt es zu einem Fehler, und ich möchte alle Änderungen rückgängig machen. Hierfür brauche ich
myConnection.Rollback()
. Leider trägt er die Zeile
doch in die Tabelle ein.
Wie kann ich das verhindern? So hätte ich mir die Transaktion auch sparen können- Sie ist völlig wirkungslos.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
FDConnection1.StartTransaction();
try
FDTable1.Append();
FDTable1.FieldByName('someField').AsString := 'Hallo Welt';
FDTable1.Post();
if CheckBox1.Checked then raise EProgrammerNotFound.Create('derp');
FDConnection1.Commit();
except
FDConnection1.Rollback(); raise;
end;
end;