FireDAC.Comp.Client.TFDCustomTransaction.StartTransaction

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

procedure StartTransaction;

C++

void __fastcall StartTransaction();

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
procedure
function
public
FireDAC.Comp.Client.pas
FireDAC.Comp.Client.hpp
FireDAC.Comp.Client TFDCustomTransaction

Beschreibung

Startet eine neue Transaktion im DBMS.

Mit StartTransaction starten Sie eine neue Transaktion im DBMS.

FireDAC unterstützt verschachtelte Transaktionen. Wenn ein DBMS keine verschachtelten Transaktionen unterstützt, emuliert FireDAC diese anhand von Speicherpunkten. Wenn bereits eine Transaktion aktiv ist, setzt FireDAC einen Speicherpunkt, ansonsten wird eine neue Transaktion gestartet. Mit Options.EnableNested aktivieren/deaktivieren Sie verschachtelte Transaktionen. Vor dem Aufruf von StartTransaction können in einer Anwendung bei Bedarf die Einstellungen der Eigenschaft Options angepasst werden. Das Anpassen von Optionen nach dem Start der Transaktion wirkt sich nicht auf die aktuelle Transaktion aus.

Alle Datenänderungen, wie INSERT/UPDATE/DELETE, die nach einem Aufruf von StartTransaction vorgenommen wurden, können entweder durch Aufruf von Commit bestätigt oder durch Aufruf von Rollback rückgängig gemacht werden. Einige DBMSs können die Transaktion nicht starten, wenn aktive Ergebnismengen vorhanden sind (z. B. MS SQL Server 2005).

Beispiel

 
 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;

Siehe auch