ROLLBACK文【ROLLBACK statement】
概要

データベースに対する複数の操作を一体不可分の一つのまとまりとして扱う処理を「トランザクション処理」という。ROLLBACK文を発行すると、そのトランザクション内で行われた変更がすべて取り消され、開始直後の状態へ復元される。変更中のデータに掛けられていたロックも解除される。
一方、処理内容に問題がなく変更を確定させる際には「COMMIT文」を用いる。COMMIT文が発行されるまで、トランザクション中に加えた変更は一時的なものとして保留される。ROLLBACK文とCOMMIT文は対になる命令で、いずれかの実行によって一連のトランザクションは成功または失敗として確定・完了する。
ROLLBACK文が使われる典型的な場面として、複数の更新処理を一つのトランザクションとして実行している途中でエラーが発生した場合が挙げられる。例えば、銀行の口座振込処理において、出金は成功したが入金処理で障害が生じた場合、そのままでは残高の整合性が崩れてしまう。この局面でROLLBACK文を実行すれば、出金処理を含めた一連の変更が無効化され、振込前の正確な状態へ戻すことができる。管理者が誤った操作を行った直後の復旧手段としても利用される。
基本的な構文は「ROLLBACK」である。「ROLLBACK WORK」や「ROLLBACK TRANSACTION」といった書き方ができる場合もあるが、利用できる構文はデータベース管理システム(DBMS)によって異なる。トランザクションの途中にSAVEPOINT文で保存地点を設けている場合は、「ROLLBACK TO SAVEPOINT」によって、その地点より後の変更のみを取り消すことも可能である。この場合、トランザクション自体は終了せず、その後の処理を続けられる。ただし、テーブル自体の作成や削除などのDDL文は実行と同時に確定される仕組みのシステムが多く、その場合はROLLBACK文で元に戻すことはできない。