データベースを操作する場合、トランザクションはデータの整合性を維持するために重要です。トランザクションは、一連のクエリまたは操作を単一の作業単位としてカプセル化します。 MySQL では、START TRANSACTION ステートメントと COMMIT ステートメントを使用してストアド プロシージャ内でトランザクションを実行できます。
ただし、特定のシナリオでは、プロシージャ内のクエリが失敗し、以前のクエリが残ることがあります。成功したクエリはコミットされました。この問題に対処するために、MySQL はクエリのいずれかが失敗した場合にトランザクション全体をロールバックするメカニズムを提供します。
MySQL の DECLARE ステートメントを使用すると、次のようなエラー ハンドラーを宣言できます。特定のエラーに応答する方法を指定します。トランザクション ロールバックの場合、HANDLER 句を使用して、ROLLBACK ステートメントを実行し、エラーが発生したときにプロシージャを終了するハンドラー ブロックを定義できます。
たとえば、次のプロシージャを考えてみましょう:
この手順では、トランザクション内のクエリのいずれかが SQL 例外で失敗した場合、エラー ハンドラーがトリガーされます。 ROLLBACK ステートメントを実行して、これまでに行われた変更をすべて元に戻し、プロシージャを終了します。
プロシージャにエラー ハンドラを実装することで、トランザクション内のすべてのクエリが確実に成功するようにすることができます。実行されるか、トランザクション全体がロールバックされ、データベース内のデータの整合性と一貫性が維持されます。
以上がMySQL ストアド プロシージャは、エラー ハンドラを使用してトランザクションの整合性をどのように確保できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。