データベース技術において、ロールバックとは、データベースを以前の状態に戻す操作のことです。ロールバックはデータベースの整合性にとって重要です。なぜなら、誤った操作が実行された後でも、データベースをクリーンなコピーに復元できるからです。[ 1 ]ロールバックは、データベースサーバーのクラッシュからの復旧に不可欠です。クラッシュ時にアクティブだったトランザクションをロールバックすることで、データベースは一貫性のある状態に復元されます。
ロールバック機能は通常トランザクションログを使用して実装されますが、マルチバージョン同時実行制御によって実装することもできます。
データベースシステムにおいて、トランザクション(T1)が障害を起こし、ロールバックが必要になった場合、連鎖的なロールバックが発生します。T1の動作に依存していた他のトランザクションも、T1の障害によってロールバックされる必要があり、連鎖的な影響が生じます。つまり、1つのトランザクションの障害が、多くのトランザクションの障害を引き起こすのです。
実用的なデータベース復旧技術では、カスケードのないロールバックが保証されるため、カスケードロールバックは望ましくない結果です。カスケードロールバックは、データベース管理者(DBA)によってスケジュールされます。
SQL は Structured Query Language の略で、データベースへのアクセス、更新、操作に使用される言語の一種です。SQL では、は、リレーショナルデータベース管理システム(RDBMS)によって、ROLLBACK前回START TRANSACTIONまたはそれ以降のすべてのデータ変更が破棄されるようにするコマンドです。これにより、データの状態は、それらの変更が行われる前の状態に「ロールバック」されます。[ 2 ]BEGIN
ROLLBACKまた、声明では、現在使用中のセーブポイントもすべて解放される予定です。
ほとんどのSQL方言では、ROLLBACKトランザクションは接続固有です。つまり、同じデータベースに2つの接続が確立された場合、一方の接続で行われたトランザクションは他の接続に影響を与えません。これは、適切な並行処理ROLLBACKを実現するために不可欠です。
ロールバックはデータベースに限ったものではありません。状態を持つ分散システムであれば、一貫性を維持するためにロールバック操作を使用することができます。ロールバックをサポートする分散システムの例としては、メッセージキューやワークフロー管理システムなどが挙げられます。より一般的には、別の操作または一連の操作の前にシステムを以前の状態にリセットする操作はすべてロールバックとみなすことができます。