推奨されます, 2019

エディターズチョイス

SQLにおけるCOMMITとROLLBACKの違い

COMMITとROLLBACKは、トランザクションの実行、実行、または取り消しに使用される2つのトランザクションステートメントです。 トランザクションは一連のクエリを持つことも、データベースを変更するupdateステートメントを持つこともできます。 COMMITとROLLBACKの基本的な違いは、それらの動作にあります。 トランザクションが正常に実行されると、 COMMITステートメントはデータベース内のトランザクションによって行われた変更を永続的なものにすることを許可します。 一方、何らかの理由でトランザクションが正常に実行された場合は、現在のトランザクションの最初のステートメントから、 ROLLBACKステートメントによってすべての更新が取り消されます。

SQLのCommit文とROLLBACK文の違いを以下の比較表を使って説明しましょう。

比較表

比較基準コミットロールバック
基本COMMITは、現在のトランザクションによって行われた変更を検証します。ROLLBACKは、現在のトランザクションによって行われた変更を消去します。
効果COMMIT文の実行後、トランザクションをROLLBACKにすることはできません。ROLLBACKが実行されると、データベースは以前の状態、つまりトランザクションの最初のステートメントの実行前に到達します。
発生トランザクションが正常に実行されると、COMMITが発生します。ROLLBACKは、トランザクションが実行の途中で中止されたときに発生します。
構文コミット;ROLLBACK;

COMMITの定義

COMMITはSQLステートメントで、トランザクションが正常に完了したことを知らせます。 トランザクションが中断せずに実行を完了するたびに、トランザクションによってデータベースに加えられた変更は永続的になります。 つまり、データベースは、最初のステートメントの実行前にトランザクションが行われていた以前の状態を取り戻すことができません。

COMMIT文の構文は次のとおりです。

コミット;

トランザクションの最後のステートメントが終了すると、トランザクションは部分的にコミットされます。 次に、 リカバリプロトコルは 、システム障害が発生してもデータベースを変更できないようにして、変更を永続的なものにします。 これがチェックされるとすぐに、トランザクションのコミットポイントに達し、最後にトランザクションはコミット状態に入ります。 トランザクションがコミット状態になると、ロールバックできなくなり、新しいトランザクションが開始されます。

ROLLBACKの定義

COMMITと同様に、 ROLLBACKもSQLステートメントであり、トランザクションが正常に完了いない ことを示します。 したがって、トランザクションによって行われた変更を元に戻すために、トランザクションは中止されます。 ROLLBACKの実行後、現在のトランザクションによって行われた変更は保持されません。

ROLLBACKの構文は次のとおりです。

ROLLBACK;

トランザクションの実行中にエラーが発生した場合、トランザクションROLLBACKが必要になります。 エラーには、システム障害、停電、トランザクションステートメントのエラー、システムクラッシュなどがあります。 停電やシステムクラッシュの場合、システムが再び再起動したときにROLLBACKが発生します。 ROLLBACKは、COMMITがまだ実行されていない場合にのみ発生します。

SQLにおけるCOMMITとROLLBACKの主な違い

  1. SQLのCOMMIT文とROLLBACK文の主な違いは、COMMIT文を実行すると、現在のトランザクションによるすべての変更が永続的になることです。 一方、ROLLBACKを実行すると、現在のトランザクションによって行われたすべての変更が消去されます。
  2. COMMITステートメントが実行されると、トランザクションによる変更はROLLBACKになることはできません。 ただし、ROLLBACK文が実行されると、データベースは以前の状態になります。
  3. トランザクションステートメントが正常に実行されると、COMMITが実行されます。 ただし、ROLLBACKはトランザクションが正常に実行されなかったときに実行されます。

結論:

トランザクションによる変更がデータベースに永続的に保存されるようにするには、トランザクションが正常に完了した後にCOMMITを使用します。 実行中にトランザクションにエラーが発生した場合は、トランザクションによって行われた変更を元に戻すために、ROLLBACKが使用されます。

Top