すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ROLLBACK TO SAVEPOINT

最終更新日:May 31, 2024

ここでは、ROLLBACK TO SAVEPOINTの構文、パラメーター、および例を紹介します。

説明

セーブポイントが確立された後に実行されたすべてのコマンドをロールバックします。 セーブポイントは有効なままであり、必要に応じて後で再びロールバックできます。

ROLLBACK TO SAVEPOINTは、名前付きセーブポイントの後に確立されたすべてのセーブポイントを暗黙的に破棄します。

概要

ROLLBACK [ WORK | TRANSACTION] [SAVEPOINT ] savepoint_name

パラメーター

savepoint_name: ロールバックするsavepoint。

RELEASE SAVEPOINTを使用して、確立後に実行されたコマンドの影響を破棄せずにセーブポイントを破棄します。

設定されていないセーブポイント名の指定はエラーです。

カーソルは、セーブポイントに関して幾分非トランザクション挙動を有する。 セーブポイント内で開いているカーソルは、セーブポイントがロールバックされると閉じられます。 以前に開いたカーソルが、後にロールバックされるセーブポイント内のFETCHまたはMOVEコマンドの影響を受けた場合、カーソルはFETCHが指していた位置のままになります (つまり、FETCHによるカーソルの動きはロールバックされません) 。 カーソルを閉じることも、ロールバックによって元に戻されません。 ただし、カーソルのクエリによって引き起こされるその他の副作用 (クエリによって呼び出される揮発性関数の副作用など) は、後でロールバックされるセーブポイント中に発生した場合、ロールバックされん。 実行によってトランザクションが中止されるカーソルはcannot-execute状態になり、ROLLBACK to SAVEPOINTを使用してトランザクションを復元できますが、カーソルは使用できなくなります。

my_savepointが確立された後に実行されたコマンドの効果を元に戻すには:

ROLLBACK TO SAVEPOINT my_savepoint;

カーソル位置はsavepointロールバックの影響を受けません:

BEGIN;

    SELECT 1 UNION SELECT 2のDECLARE fooカーソル。

    SAVEPOINT foo;

    fooからのFETCH 1;
     ? コラム?
    ----------
            1

    SAVEPOINT fooへのロールバック;

    fooからのFETCH 1;
     ? コラム?
    ----------
            2

    コミット;