開発者リファレンス : データ アクセス方法 : SQL Engine Reference : SQL 構文リファレンス : ROLLBACK
  
このページをシェアする                  
ROLLBACK
ROLLBACK は、データベースを現行トランザクションが開始される前の状態に戻します。このステートメントにより、最後に行った SAVEPOINT または START TRANSACTION 以降に取得したロックを解放します。
ROLLBACK TO SAVEPOINT ステートメントは、指定されたセーブポイントまでトランザクションをロールバックします。
構文
ROLLBACK [WORK] [TO SAVEPOINT セーブポイント名]
 
セーブポイント名 ::= ユーザー定義名
備考
AUTOCOMMIT がオフの場合、ROLLBACK、SAVEPOINT、および RELEASE はセッション レベル(ストアド プロシージャの外部)でのみサポートされます。そうでない場合、ROLLBACK、SAVEPOINT、および RELEASE はストアド プロシージャ内で使用しなければなりません。
ストアド プロシージャ内でコミットされたステートメントは、呼び出し元の SQL アプリケーションの一番外側のトランザクションによって制御されます。
ネストされたトランザクションの場合、ROLLBACK は一番近い START TRANSACTION までロール バックします。たとえば、トランザクションが 5 レベルまでネストされている場合、すべてのトランザクションを元に戻すには 5 つの ROLLBACK ステートメントが必要になります。トランザクションは、コミットされるかロール バックされるかのいずれかで、両方はされません。つまり、コミットされたトランザクションをロール バックすることはできません。
次のステートメントによって、トランザクションが開始されてからデータベースに加えられた変更が元に戻ります。
ROLLBACK WORK;
次のステートメントによって、Svpt1 と名付けられた最後のセーブポイントからデータベースに加えられた変更が元に戻ります。
ROLLBACK TO SAVEPOINT Svpt1;
関連項目
COMMIT
RELEASE SAVEPOINT
SAVEPOINT