AnyDAC
ContentsIndexHome
PreviousUpNext
TADCustomConnection.Rollback Method

Cancels all modifications to the data made in the current transaction and optionally ends transaction.

Group
Links

Call Rollback to cancel all modifications, like a INSERT's / UPDATE's / DELETE's, made in current transaction to the database. 

AnyDAC supports nested transactions, so the current transaction is the one started with most recent StartTransaction call. If the database does not support nested transactions, like most of DBMS's, then AnyDAC will emulate nested transactions using savepoints. 

Before calling Rollback, an application may check the status of the InTransaction property. If an application calls Rollback and there is no current transaction, an exception is raised. 

A Rollback call on Interbase / Firebird will close and unprepare all datasets and commands, associated with this transaction object. On some other DBMS's a call will invalidate all active result sets. For example, on MS SQL Server 2005. To force FetchAll on active datasets use ReleaseClients method. 

The Rollback call is the shortcut to Transaction.Rollback, if Transaction property is assigned. Otherwise Rollback will operate on default connection transaction.

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

See AnyDAC\Samples\Comp Layer\TADConnection\Transactions sample for details.

What do you think about this topic? Send feedback!