在多个表中插入时的原子性


Atomicity while inserting in multiple tables

我正在设置实体的类别和子类别,因此子类别取决于类别。在设置类别时,我需要确保完整事务成功或完整事务失败。如果我同时使用两个查询,它仍然会一个接一个地执行,因此有可能一个插入成功,另一个不成功。在php或mysqli中,有什么好的方法可以维护原子性吗?

没有,因为这些数据库完全不相关,不存在跨数据库事务。至少,据我所知。:)

但是,如果您使用事务进行插入,那么您就更安全了。在两个数据库上启动一个事务,对两个数据库执行所有修改,然后才提交两个事务。insert/update语句将已经运行(如果出现约束错误等问题,可能会失败),因此在您即将提交的时候,没有太多可能出错的地方。

确保表的存储类型支持事务。

[编辑]

你可以使用

START TRANSACTION;
-- Your queries go here
COMMIT

在事务中执行语句。

有关更多信息,请阅读:http://dev.mysql.com/doc/refman/5.0/en/commit.html