FireDAC.Comp.Client.TFDCustomConnection.Rollback

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

procedure Rollback;

C++

void __fastcall Rollback();

Propriétés

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

Description

Annule toutes les modifications apportées aux données dans la transaction en cours, et met facultativement fin à celle-ci.

Appelez Rollback pour annuler toutes les modifications, telles que celles causées par la commande INSERT, UPDATE ou DELETE, effectuées dans la transaction en cours dans la base de données.

Comme FireDAC supporte les transactions imbriquées, la transaction en cours est celle qui a été démarrée par l'appel de StartTransaction le plus récent. Si la base de données ne supporte pas les transactions imbriquées, comme la plupart des SGBD, FireDAC émule alors des transactions imbriquées à l'aide de points de sauvegarde.

Avant d'appeler Rollback, une application peut vérifier le statut de la propriété InTransaction. Si une application appelle Rollback alors qu'il n'existe pas de transaction en cours, une exception est déclenchée.

Un appel de Rollback sur InterBase / Firebird ferme et annule la préparation de tous les ensembles de données et commandes, associés à cet objet transaction. Sur certains autres SGBD (par exemple, sur MS SQL Server 2005), un appel de Rollback invalide tous les ensembles de résultats actifs. Pour imposer FetchAll aux ensembles de données actifs, utilisez la méthode ReleaseClients.

L'appel de Rollback est le raccourci de Transaction.Rollback, si la propriété Transaction est assignée. Sinon, Rollback opère sur la transaction de connexion par défaut.

Exemple

 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;

Voir aussi