SQLのCOMMITとROLLBACKの違い

著者: Laura McKinney
作成日: 1 4月 2021
更新日: 11 5月 2024
Anonim
Курс по SQL. SQL команды BEGIN, COMMIT и ROLLBACK: начало, подтвреждение и откат транзакций
ビデオ: Курс по SQL. SQL команды BEGIN, COMMIT и ROLLBACK: начало, подтвреждение и откат транзакций

コンテンツ


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

以下に示す比較チャートを使用して、SQLのCommitステートメントとROLLBACKステートメントの違いについて説明します。

  1. 比較表
  2. 定義
  3. 主な違い
  4. 結論

比較表

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

COMMITの定義

コミット SQLステートメントです。 成功した トランザクションの完了。トランザクションが割り込みなしで実行を完了するたびに、トランザクションによってデータベースに加えられた変更は永続的になります。つまり、データベースは、最初のステートメントの実行前のトランザクションの以前の状態を取り戻すことができません。


COMMITステートメントの構文は次のとおりです。

コミット;

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

ROLLBACKの定義

COMMITと同様に、 ロールバック SQLステートメントでもあり、トランザクションが じゃない 完了しました 首尾よく。したがって、トランザクションは 中止された トランザクションによって行われた変更を取り消すため。 ROLLBACKの実行後、現在のトランザクションによって行われた変更は保持されません。

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

ROLLBACK;

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

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

結論:

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