取消mysql innodb中的事务,而不是提交或回滚

jexiocij  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(340)

我使用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 取消事务,但这是一个误称,因为实际上没有什么可以回滚。

nzk0hqpo

nzk0hqpo1#

实际上没有取消交易的概念。相反,你需要做一个 rollback . 或者,你也可以什么都不做。如果连接对象在超出范围时有一个未提交的事务,或者该事务已关闭,则该事务将自动回滚。
换言之,如果没有什么可以回滚的话,也没关系,因为在引擎盖下面,db驱动程序将优雅地处理这个情况。

相关问题