在MySQL InnoDB中取消事务,而不是提交或回滚

时间:2018-10-18 19:48:42

标签: php mysql transactions innodb cancellation

我正在MySQL InnoDB数据库中使用事务执行2次插入。但是,如果第一次插入失败,我想简单地“取消”交易。有没有一种好的方法来“取消”交易,而不是使用srandcommit

例如,在php中,我正在执行以下操作:

rollback

如您所见,我正在使用$connection->beginTransaction(); $affectedRows = $tableOne->insertIgnore('example data'); if ($affectedRows == 0) { $connection->rollback(); } else { $tableTwo->insert('more example data'); $connection->commit(); } 取消交易,但这是用词不当,因为实际上没有任何回滚的内容。

1 个答案:

答案 0 :(得分:2)

实际上没有取消交易的概念。相反,您需要执行rollback。另外,您也什么也不能做。如果连接对象超出范围时有未提交的事务,或者如果连接对象已关闭,则该事务将自动回滚。

换句话说,没有任何回滚可以,因为在后台,DB驱动程序将优雅地处理这种情况。