MySQL プロシージャ内のトランザクション管理
MySQL プロシージャでは、トランザクションの力を利用して、複数のクエリにわたるデータの整合性を確保できます。ただし、潜在的なクエリの失敗を処理し、部分的なコミットを防ぐためのメカニズムを用意することが重要です。
MySQL プロシージャでのクエリ ロールバック
提供されているコード スニペットは、基本的なものを表しています。さまざまなクエリを含むトランザクションを含む MySQL プロシージャの構造:
BEGIN START TRANSACTION; .. Query 1 .. .. Query 2 .. .. Query 3 .. COMMIT; END;
ただし、 「クエリ 2」でエラーが発生し、意図したロールバックにもかかわらず「クエリ 1」の結果がコミットされます。
解決策: トランザクション ロールバックのエラー ハンドラ
この問題に対処するには, MySQL には、クエリが失敗したときに何が起こるかを制御できるエラー ハンドラーが用意されています。エラー ハンドラーを宣言することで、トランザクションのロールバックなど、実行するアクションを指定できます。
START TRANSACTION; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; EXIT PROCEDURE; END; COMMIT;
このエラー ハンドラーを設定すると、「クエリ 2」が失敗した場合、トランザクションは自動的にロールされます。戻る。これにより、「クエリ 1」の結果がコミットされず、データベースの一貫性が保たれます。
結論
MySQL プロシージャでエラー ハンドラを活用することで、トランザクションとクエリが失敗した場合の部分的なコミットを防ぎます。これにより、データの整合性が確保され、データベースの精度が維持されます。
以上がエラー ハンドラーはトランザクションを伴う MySQL ストアド プロシージャのデータの整合性をどのように保証できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。