php - 插入多个表时的原子性

标签 php mysqli database atomic

我正在设置实体的类别和子类别,因此子类别取决于类别。在设置类别时,我需要确保完成交易成功或完成交易失败。如果我一起使用 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/

相关文章:

php - 元素未添加到数据库中

database - 无法使用 Play Framework 2.2.2 连接到远程 Heroku Postgres 数据库

sql - 查询数据库中有共同标签的地点

mysql - 历史/审计表的设计建议

php - 在数据库中使用 PHP 变量

php - 在我的数据库中构建 "pages"的启用和排列

php - Bing Web Search API v7 似乎不起作用

php - 需要正确的 PHP/MySQL 语法帮助

php - Issu 必须获取新的交易 ID 一直显示第一个交易 ID

Php Mysql 存储过程 IN OUT