插入多个表时的原子性

时间:2012-09-04 18:25:32

标签: php mysqli database atomicity

我正在设置实体的类别和子类别,因此子类别取决于类别。在设置类别时,我需要确保完整的事务成功或完成事务失败。如果我一起使用2个查询,它仍将逐个执行,因此可能一次插入成功而另一次插入不成功。有没有什么好的方法可以在php或mysqli中保持原子性?

1 个答案:

答案 0 :(得分:2)

不,因为这些数据库完全不相关,并且不存在跨数据库事务。至少,不是我所知道的。 :)

但如果您使用插入事务处理,那么 little 位更安全。在两个数据库上启动事务,对两个数据库执行所有修改,然后仅提交两个事务。插入/更新语句已经运行(如果存在约束错误等问题,可能已经失败),所以在您即将提交的时候,可能出现的问题并不多。

确保您的表位于支持事务的存储类型中。

[编辑]

您可以使用

START TRANSACTION;

-- Your queries go here

COMMIT

执行事务中的语句。

有关详情,请参阅:http://dev.mysql.com/doc/refman/5.0/en/commit.html