FireDAC.Comp.Client.TFDCustomTransaction.StartTransaction
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;