読み方 : セーブポイントぶん

SAVEPOINT文【SAVEPOINT statement】

概要

SAVEPOINT文とは、データベースのトランザクション処理において、一連の処理の途中に目印となる地点(セーブポイント)を設定するSQL文。指定した地点以前の処理に影響を及ぼすことなく、それ以降の処理だけをロールバック(取り消し)できる。1つのトランザクション内に複数のセーブポイントを設定することも可能である。
SAVEPOINT文のイメージ画像

トランザクションとは、データベースに対する複数の処理をひとまとまりとして扱う単位である。途中でエラーが発生した場合、通常のROLLBACK文ではトランザクション開始以降のすべての変更が取り消される。長い一連の処理を最初からやり直すのは非効率な場合がある。

そこで事前にSAVEPOINT文で地点を設定しておけば、エラーが起きた際にトランザクションの先頭まで戻らず、ROLLBACK TO SAVEPOINT文によって直前のセーブポイントまでだけを取り消して処理を継続できる。セーブポイント以前の正常な処理結果は保持されたまま、以降の変更のみが破棄される仕組みである。

具体的な構文としては、まずBEGIN文でトランザクションを開始し、いくつかの処理を実行した後に「SAVEPOINT セーブポイント名」で、その時点の状態に名前を付けて保存する。その後、さらに処理を続け、問題が生じた場合には「ROLLBACK TO SAVEPOINT セーブポイント名」で指定した地点まで戻す。最終的に問題がなければCOMMIT文を実行し、トランザクション全体の内容を確定させる。

一つのトランザクションに複数のセーブポイントを設定した場合、新しいセーブポイントを設定した後にそれより前のセーブポイントへ戻ることも可能である。ただし、ROLLBACK TO SAVEPOINTによって指定した地点より後に設定されたセーブポイントは、以後利用できなくなる。設定したセーブポイントが不要になった時点でRELEASE SAVEPOINT文を使い、明示的に削除することもできる。

トランザクション全体が完了あるいは取り消された場合には、その中に設定されていたセーブポイントはすべて消去される。SAVEPOINT文は、MySQLやPostgreSQL、Oracle Database、SQL Serverなど多くのデータベース管理システム(DBMS)で利用できるが、対応状況や構文の細部は製品によって異なる場合がある。SQL Serverではセーブポイントの設定に「SAVE TRANSACTION」という文が使われる。

(2026.9.17更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。