FireDAC.Comp.Client.TFDCustomConnection.Commit
Delphi
procedure Commit;
C++
void __fastcall Commit();
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
procedure function |
public | FireDAC.Comp.Client.pas FireDAC.Comp.Client.hpp |
FireDAC.Comp.Client | TFDCustomConnection |
Beschreibung
Speichert Datenänderungen dauerhaft, die in der aktuellen Transaktion vorgenommen wurden, und beendet optional die aktuellen Transaktionen.
Mit Commit speichern Sie Änderungen (wie z. B. diejenigen, die von INSERT-, UPDATE- oder DELETE-Anweisungen verursacht wurden) dauerhaft, die in der aktuellen Transaktion an der Datenbank vorgenommen wurden.
FireDAC unterstützt verschachtelte Transaktionen, daher handelt es sich bei der aktuellen Transaktion um diejenige, die zuletzt mit einem StartTransaction-Aufruf gestartet wurde. Wenn die Datenbank keine verschachtelten Transaktionen unterstützt, wie die meisten DBMSs, dann emuliert FireDAC verschachtelte Transaktionen anhand von Speicherpunkten.
Vor dem Aufruf von Commit
kann in einer Anwendung der Status der Eigenschaft InTransaction überprüft werden. Wenn eine Anwendung Commit
aufruft, obwohl keine aktuelle Transaktion vorhanden ist, führt dies zu einer Exception.
Ein Commit-Aufruf für InterBase/Firebird schließt alle diesem Transaktionsobjekt zugeordneten Datenmengen und Anweisungen und hebt deren Vorbereitung auf. Bei einigen anderen DBMSs (z. B. MS SQL Server 2005) macht ein Aufruf alle aktiven Ergebnismengen unwirksam. Verwenden Sie die Methode ReleaseClients, um FetchAll für aktive Datenmengen zu erreichen.
Der Aufruf von Commit ist eine Kurzform für Transaction.Commit, wenn die Eigenschaft Transaction zugewiesen ist. Ansonsten arbeitet Commit mit der Transaktion der Standardverbindung.
Beispiel
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.Commit;
end;
except
FDConnection1.Rollback;
raise;
end;
end;