我在MySQL InnoDB数据库中使用事务来执行2次插入。但是,如果第一次插入失败,我想简单地“取消”交易。有没有一种好的方法来“取消”交易,而不是使用commit
或rollback
?
例如,在php中,我正在执行以下操作:
$connection->beginTransaction();
$affectedRows = $tableOne->insertIgnore('example data');
if ($affectedRows == 0) {
$connection->rollback();
} else {
$tableTwo->insert('more example data');
$connection->commit();
}
如您所见,我正在使用
rollback
取消事务,但这是用词不当,因为实际上没有要回滚的内容。 最佳答案
确实没有取消交易的概念。相反,您需要执行rollback
。另外,您也什么也不能做。如果连接对象超出范围时有未提交的事务,或者连接对象已关闭,则该事务将自动回滚。
换句话说,没有任何回滚是可以的,因为在后台,DB驱动程序将优雅地处理这种情况。
关于php - 在MySQL InnoDB中取消事务,而不是提交或回滚,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52881466/