FireDAC.Comp.Client.TFDCustomConnection.CommitRetaining
Delphi
procedure CommitRetaining;
C++
void __fastcall CommitRetaining();
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
procedure function |
public | FireDAC.Comp.Client.pas FireDAC.Comp.Client.hpp |
FireDAC.Comp.Client | TFDCustomConnection |
Description
Stocke de façon permanente les modifications apportées aux données dans la transaction en cours, sans y mettre fin.
Appelez CommitRetaining pour stocker de façon permanente 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, sans terminer la transaction.
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. CommitRetaining est seulement utile pour la transaction principale, et non pour les transactions imbriquées.
L'appel de CommitRetaining est le raccourci de Transaction.CommitRetaining, si la propriété Transaction est assignée. Sinon, CommitRetaining opèrera sur la transaction de connexion par défaut.
Avant d'appeler CommitRetaining, une application peut vérifier le statut de la propriété InTransaction. Si une application appelle CommitRetaining alors qu'il n'existe pas de transaction en cours, une exception est déclenchée.
CommitRetaining utilise les fonctionnalités natives sur IB/FB. Sur d'autres SGBD, la méthode correspond à l'appel de Commit, puis de StartTransaction.
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;