我正在设置实体的类别和子类别,因此子类别取决于类别。在设置类别时,我需要确保完成交易成功或完成交易失败。如果我一起使用 2 个查询,它仍然会一个接一个地执行,因此有可能一个插入成功而另一个不成功。有什么好的方法可以在 php 或 mysqli 中保持原子性?
最佳答案
不,因为这些数据库完全不相关,并且不存在跨数据库事务这样的事情。至少,据我所知不是。 :)
但是如果您对插入使用事务,那么您一点会更安全一些。在两个数据库上启动事务,对两个数据库进行所有修改,然后才提交两个事务。插入/更新语句将已经运行(如果存在约束错误等问题,则可能会失败),因此在您即将提交时,不太可能出错。
确保您的表采用支持事务的存储类型。
[编辑]
你可以使用
START TRANSACTION;
-- Your queries go here
COMMIT
在事务中执行语句。
有关更多信息,请阅读:http://dev.mysql.com/doc/refman/5.0/en/commit.html
关于php - 插入多个表时的原子性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12269304/