FireDAC.Comp.Client.TFDCustomConnection.RollbackRetaining

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

procedure RollbackRetaining;

C++

void __fastcall RollbackRetaining();

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
procedure
function
public
FireDAC.Comp.Client.pas
FireDAC.Comp.Client.hpp
FireDAC.Comp.Client TFDCustomConnection

Beschreibung

Annulliert alle Datenänderungen, die in der aktuellen Transaktion vorgenommen wurden, ohne die aktuelle Transaktion zu beenden.

Mit RollbackRetaining annullieren Sie alle Änderungen (wie z. B. diejenigen, die von INSERT-, UPDATE- oder DELETE-Anweisungen verursacht wurden) dauerhaft, die in der aktuellen Transaktion an der Datenbank vorgenommen wurden.

FireDAC unterstützt verschachtelte Transaktionen, daher handelt es sich bei der aktuellen Transaktion um diejenige, die zuletzt mit einem StartTransaction-Aufruf gestartet wurde. Wenn die Datenbank keine verschachtelten Transaktionen unterstützt, wie die meisten DBMSs, dann emuliert FireDAC verschachtelte Transaktionen anhand von Speicherpunkten.

Der Aufruf von RollbackRetaining ist eine Kurzform für Transaction.RollbackRetaining, wenn die Eigenschaft Transaction zugewiesen ist. Ansonsten arbeitet RollbackRetaining mit der Transaktion der Standardverbindung. Vor dem Aufruf von RollbackRetaining kann in einer Anwendung der Status der Eigenschaft InTransaction überprüft werden. Wenn in einer Anwendung RollbackRetaining aufgerufen wird, obwohl keine aktuelle Transaktion vorhanden ist, wird eine Exception ausgelöst. RollbackRetaining verwendet für InterBase und Firebird die native Funktionalität. Für andere DBMSs entspricht die Methode dem Aufruf von Rollback gefolgt von StartTransaction.

Beispiel

 
 procedure TForm1.DoThatButtonClick(Sender: TObject);
 begin
   FDConnection1.StartTransaction;
   try
     if CustomerQuery.Locate('ID', [100]) then begin
       CustomerQuery.Edit;
       CustomerQuery.FieldByName('status').AsString := 'top';
       CustomerQuery.Post;
       FDConnection1.ExecSQL('delete from debt where CustID = 100');
       FDConnection1.CommitRetaining;
     end;
   except
     FDConnection1.RollbackRetaining;
     raise;
   end;
 end;

Siehe auch