寻求使用row_count的过程的示例

时间:2010-12-02 08:44:46

标签: mysql

我想编写一个过程来处理将数据插入到2个表中的过程。如果插入任何一个都失败,则整个过程应该失败。我尝试了很多不同的方法,无法让它发挥作用。我故意使我的第二次插入失败,但无论如何数据都插入到第一个表中。

我试图基于rowcount嵌套IF语句,但即使第二次插入时数据失败,数据仍然会插入到第一个表中。我正在寻找总共2个受影响的行。

有人可以告诉我如何处理多个插入和回滚,如果其中一个失败?一个简短的例子就是不错的。

2 个答案:

答案 0 :(得分:0)

如果您使用的是InnoDB表(或其他兼容引擎),您可以使用MySQL的Transaction功能,它可以让您完全按照自己的意愿行事。

  • 基本上是您开始交易
  • 执行查询以检查结果
  • 如果每个结果都没问题,请致电CONMIT
  • 否则您调用ROLLBACK会使事务中的所有查询无效。

您可以阅读以及有关示例here的文章。

HTH!

答案 1 :(得分:0)

您可以尝试关闭自动提交。即使您没有明确提交已启动的事务,它也可能会自动提交您的第一个插入:

SET autocommit = 0; START TRANSACTION ......