Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Append() und Post() bei Tabellen wenn Transaktionen im Spiel sind

  Alt 16. Jun 2016, 10:43
Datenbank: SQLite • Version: 3 • Zugriff über: FireDAC
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;
  Mit Zitat antworten Zitat