为什么我的 MySQL 存储过程在执行事务后失败?

Barbara Streisand
发布: 2024-10-24 23:06:31
原创
752 人浏览过

Why is My MySQL Stored Procedure Failing After Implementing Transactions?

MySQL 存储过程中的事务实现

为了增强数据可靠性,用户尝试在其 MySQL 存储过程中实现事务。然而,这些变化导致该程序无法运行。尽管查阅文档并在线搜索,用户仍无法识别错误。

检查提供的代码后,明显存在两个语法错误:

  1. 退出处理程序中缺少逗号: SQL 异常和警告的退出处理程序应使用逗号分隔条件。正确的语法规定:DECLARE EXIT HANDLER FOR SQLEXCEPTION,SQLWARNING 而不是 DECLARE EXIT HANDLER FOR SQLEXCEPTION SQLWARNING。
  2. 退出处理程序缺少分号: 还必须遵循终止退出处理程序的 END 语句就像任何其他语句一样,用分号分隔。这看起来像:END;

一旦纠正了这些语法错误,该过程就应该按预期运行,从而允许用户无缝地实现交易。更正后的代码应类似于以下内容:

<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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!