ホームページ >データベース >mysql チュートリアル >トランザクションの実装後に MySQL ストアド プロシージャが失敗するのはなぜですか?
MySQL ストアド プロシージャでのトランザクションの実装
データの信頼性を高めるために、ユーザーが MySQL ストアド プロシージャ内でトランザクションを実装しようとしました。 。ただし、変更によりこの手順は機能しなくなってしまいました。ドキュメントを参照したりオンラインで検索したにもかかわらず、ユーザーはエラーを特定できませんでした。
提供されたコードを調べると、2 つの構文エラーがあることが明らかです:
これらの構文エラーが修正されると、プロシージャは意図したとおりに機能し、ユーザーがトランザクションをシームレスに実装できるようになります。修正されたコードは次のようになります:
<code class="sql">BEGIN DECLARE poid INT; DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING BEGIN ROLLBACK; END; START TRANSACTION; -- ADD option 5 INSERT INTO product_option(product_id,option_id,required) VALUES(insertedProductID,5,0); SET poid = (SELECT LAST_INSERT_ID()); INSERT INTO product_option_value(product_option_id,product_id,option_id,option_value_id,quantity,subtract,price,price_prefix,points,points_prefix,weight,weight_prefix) VALUES(poid,insertedProductID,5,50,0,0,4.99,'+',0,'+',0,'+'); -- ADD option 12 INSERT INTO product_option(product_id,option_id,required) VALUES(insertedProductID,12,1); -- ADD option 13 INSERT INTO product_option(product_id,option_id,required) VALUES(insertedProductID,13,0); COMMIT; END</code>
以上がトランザクションの実装後に MySQL ストアド プロシージャが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。