FireDAC.Comp.Client.TFDCustomTransaction.Rollback
Delphi
procedure Rollback;
C++
void __fastcall Rollback();
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | FireDAC.Comp.Client.pas FireDAC.Comp.Client.hpp |
FireDAC.Comp.Client | TFDCustomTransaction |
説明
現在のトランザクションでデータに加えられたすべての変更をキャンセルし、場合によってはトランザクションを終了します。
Rollback を呼び出すと、現在のトランザクションで INSERT/UPDATE/DELETE
コマンドなどによりデータベースに加えられた変更をすべてキャンセルすることができます。FireDAC ではネストしたトランザクションをサポートしているため、現在のトランザクションは、直近の StartTransaction 呼び出しで開始されたトランザクションになります。ほとんどの DBMS のように、ネストしたトランザクションがデータベースでサポートされていない場合、FireDAC では、ネストしたトランザクションをセーブポイントを使ってエミュレートします。
Rollback を呼び出す前に、アプリケーションで Active プロパティの状態を確認することができます。アプリケーションで Rollback を呼び出したときに現在のトランザクションがなければ、例外が発生します。
InterBase/Firebird データベースに対して Rollback を呼び出すと、このトランザクション オブジェクトに関連付けられているデータセットおよびコマンドがすべて閉じられ準備解除されます。その他の一部の DBMS では、この呼び出しでアクティブな結果セットがすべて無効になります(たとえば、MS SQL Server 2005 など)。
例
procedure TForm1.ChangeButtonClick(Sender: TObject);
begin
FDQuery1.Transaction := ADTransaction1;
FDQuery1.SQL.Text := 'update employees set salary = salary * :k where id = :id';
FDTransaction1.StartTransaction;
try
FDQuery1.ExecSQL('', [1.2, 100]);
FDQuery1.ExecSQL('', [1.3, 200]);
FDTransaction1.Commit;
except
FDTransaction1.Rollback;
raise;
end;
end;