ホームページ  >  記事  >  データベース  >  SQL でトランザクションが自動的にロールバックされないのはどのような場合ですか?

SQL でトランザクションが自動的にロールバックされないのはどのような場合ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-25 07:49:28994ブラウズ

When is a Transaction Not Automatically Rolled Back in SQL?

自動トランザクション ロールバック

質問は、START TRANSACTION と START TRANSACTION で囲まれた SQL ステートメントのブロック内でエラーが発生した場合のトランザクションの動作を中心に展開しています。トランザクションをコミットします。 OP は、COMMIT TRANSACTION ステートメントの前に構文エラーが発生すると、トランザクションが自動的にロールバックされることを認識します。

トランザクション ロールバック メカニズム

いいえ、トランザクションはロールバックされませんエラーが発生するとすぐに戻ります。ただし、特定のクライアント アプリケーションでは、エラー処理に特定のポリシーが採用される場合があります。

たとえば、mysql コマンドライン クライアントの場合:

  • 通常、実行中のエラーは実行プロセスを停止し、クライアントを終了します。
  • トランザクションの進行中に終了すると、トランザクションが自動的にロールバックされます。

ロールバック ポリシーのカスタマイズ

独自のアプリケーションを構築する場合、トランザクション ロールバック ポリシーを制御できます。ただし、ロールバックが強制される場合には例外があることに注意してください:

  1. クライアント切断: データベースを終了または切断すると、常にトランザクション ロールバックが開始されます。
  2. デッドロック/ロック待機タイムアウト: デッドロックまたはロック待機タイムアウトが発生すると、暗黙的なロールバックが発生します。

他のすべてのシナリオでは、トランザクション中にエラーが発生した場合、エラーが返され、開発者はトランザクションをコミットするか破棄するかを選択できます。

以上がSQL でトランザクションが自動的にロールバックされないのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。