我想编写一个过程来处理将数据插入到2个表中的过程。如果插入任何一个都失败,则整个过程应该失败。我尝试了很多不同的方法,无法让它发挥作用。我故意使我的第二次插入失败,但无论如何数据都插入到第一个表中。
我试图基于rowcount嵌套IF语句,但即使第二次插入时数据失败,数据仍然会插入到第一个表中。我正在寻找总共2个受影响的行。
有人可以告诉我如何处理多个插入和回滚,如果其中一个失败?一个简短的例子就是不错的。
答案 0 :(得分:0)
如果您使用的是InnoDB表(或其他兼容引擎),您可以使用MySQL的Transaction功能,它可以让您完全按照自己的意愿行事。
您可以阅读以及有关示例here的文章。
HTH!
答案 1 :(得分:0)
您可以尝试关闭自动提交。即使您没有明确提交已启动的事务,它也可能会自动提交您的第一个插入:
SET autocommit = 0;
START TRANSACTION
......