我使用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
取消事务,但这是一个误称,因为实际上没有什么可以回滚。
1条答案
按热度按时间nzk0hqpo1#
实际上没有取消交易的概念。相反,你需要做一个
rollback
. 或者,你也可以什么都不做。如果连接对象在超出范围时有一个未提交的事务,或者该事务已关闭,则该事务将自动回滚。换言之,如果没有什么可以回滚的话,也没关系,因为在引擎盖下面,db驱动程序将优雅地处理这个情况。