【发布时间】:2011-08-08 14:36:17
【问题描述】:
我的 PHP 代码中有两个 MySQL 查询。
基本上我需要执行两个查询(它们是两个 INSERT)查询,并且都必须成功。如果例如 query1 成功但 query2 不成功;我需要回滚 query1 因为两个查询都必须成功。
我正在使用 MyISAM,但我知道我无法进行回滚等操作,但有什么办法可以克服我的问题(另一种解决方案)来做我想做的事吗?
它们都相互依赖,因为 query1 存储来自表单的数据,而 query2 将一些其他详细信息插入到另一个表(它基本上是一个计数器)中,用于跟踪推荐系统的总计数。
【问题讨论】:
-
如果您希望符合 ACID,那么您应该使用符合 ACID 的存储引擎(即 InnoDB)。没有办法解决这个问题。如果您的第二个查询失败,那么第一条记录的删除也可能会失败......因此,如果不实际使用事务,就无法强制执行此操作。