FireDAC.Comp.Client.TFDCustomConnection.RollbackRetaining

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

procedure RollbackRetaining;

C++

void __fastcall RollbackRetaining();

プロパティ

種類 可視性 ソース ユニット
procedure
function
public
FireDAC.Comp.Client.pas
FireDAC.Comp.Client.hpp
FireDAC.Comp.Client TFDCustomConnection

説明

現在のトランザクションでデータに加えられた変更を、現在のトランザクションを終了しないまま、すべてキャンセルします。


RollbackRetaining を呼び出すと、現在のトランザクションで INSERT/UPDATE/DELETE コマンドなどによりデータベースに加えられた変更をすべてキャンセルします。

FireDAC ではネストしたトランザクションをサポートしているため、現在のトランザクションは、直近の StartTransaction 呼び出しで開始されたトランザクションになります。ほとんどの DBMS のように、ネストしたトランザクションがデータベースでサポートされていない場合、FireDAC では、ネストしたトランザクションをセーブポイントを使ってエミュレートします。

Transaction プロパティが割り当てられている場合、RollbackRetaining 呼び出しは、Transaction.RollbackRetaining のショートカットです。そうでない場合は、RollbackRetaining はデフォルトの接続トランザクションで操作します。RollbackRetaining を呼び出す前に、アプリケーションで InTransaction プロパティの状態を確認することができます。アプリケーションで RollbackRetaining を呼び出したときに現在のトランザクションがなければ、例外が発生します。RollbackRetaining は、Interbase/Firebird の場合にはネイティブ機能を使用します。他の DBMS の場合、このメソッドは Rollback を呼び出してから StartTransaction を呼び出すのと同じです。

 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.CommitRetaining;
     end;
   except
     FDConnection1.RollbackRetaining;
     raise;
   end;
 end;

関連項目