FireDAC.Comp.Client.TFDCustomTransaction.StartTransaction

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

procedure StartTransaction;

C++

void __fastcall StartTransaction();

Propriétés

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

Description

Démarre une nouvelle transaction dans le SGBD.

Appelez StartTransaction pour démarrer une nouvelle transaction dans le SGBD.

FireDAC supporte les transactions imbriquées. Si le SGBD ne supporte pas les transactions imbriquées, FireDAC les émule à l'aide de points de sauvegarde. Si une transaction est déjà active, FireDAC place un point de sauvegarde ; sinon, il démarre une nouvelle transaction. Utilisez Options.EnableNested pour activer / désactiver les transactions imbriquées.   Avant d'appeler StartTransaction, une application peut éventuellement ajuster les paramètres de la propriété Options. Ajuster des options après le démarrage de la transaction n'a pas d'effet sur la transaction en cours.

Toutes les modifications de données, comme INSERT / UPDATE / DELETE, effectuées après un appel à StartTransaction, peuvent être confirmées en appelant Commit ou annulées en appelant Rollback.  Certains SGBD ne peuvent pas démarrer la transaction s'il existe des ensembles de résultats actifs (par exemple, MS SQL Server 2005).

Exemple

 
 procedure TForm1.ChangeButtonClick(Sender: TObject);
 begin
   FDQuery1.Transaction := FDTransaction1;
   FDQuery1.SQL.Text := 'select * from employees';
 
   FDQuery2.Transaction := FDTransaction1;
   FDQuery2.SQL.Text := 'update employees set salary = salary * :k where id = :id';
 
   FDTransaction1.Options.Isolation := xiRepeatableRead;
   FDTransaction1.StartTransaction;
   try
     FDQuery1.Open;
     while not FDQuery1.Eof do begin
       FDQuery2.ExecSQL('', [1.2, FDQuery1.FieldByName('id').AsInteger]);
       FDTransaction1.CommitRetaining;
       FDQuery1.Next;
     end;
     FDTransaction1.Commit;
   except
     FDTransaction1.Rollback;
     raise;
   end;
 end;

Voir aussi