FireDAC.Comp.Client.TFDCustomConnection.RollbackRetaining

From RAD Studio API Documentation
Jump to: navigation, search

Delphi

procedure RollbackRetaining;

C++

void __fastcall RollbackRetaining();

Properties

Type Visibility Source Unit Parent
procedure
function
public
FireDAC.Comp.Client.pas
FireDAC.Comp.Client.hpp
FireDAC.Comp.Client TFDCustomConnection

Description

Cancels all modifications to the data made in the current transaction, without ending the current transaction.

Call RollbackRetaining to cancel all modifications, such as those caused by the INSERT, UPDATE, or DELETE command, made in the current transaction to the database. 

FireDAC supports nested transactions, so the current transaction is the one started with the most recent StartTransaction call. If the database does not support nested transactions, like most of DBMSs, then FireDAC emulates nested transactions using savepoints. 

The RollbackRetaining call is the shortcut to Transaction.RollbackRetaining, if the Transaction property is assigned. Otherwise, RollbackRetaining operates on the default connection transaction.  Before calling RollbackRetaining, an application might check the status of the InTransaction property. If an application calls RollbackRetaining and there is no current transaction, an exception is raised.  RollbackRetaining uses native functionality on InterBase and Firebird. On other DBMSs, the method equals calls of Rollback, then of StartTransaction.

Example

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;

See Also