mysql - 阻止两个连接运行相同的查询

标签 mysql

我在我的网站中使用此查询来获取下一个自动增量,但问题是两个或多个连接可以同时运行此查询,并且它们都具有相同的 AUto-Increment 值。

SHOW TABLE STATUS LIKE 'TABLE_ORDERS';

有什么方法可以阻止两个或多个连接同时运行此查询吗?

非常感谢!!

Edit

此自动增量的值随后用于将记录存储在另一个表“收据”中。如果两个连接从 Orders 表中获得相同的自动增量值,则最终 Receipt 表中的两行具有相同的值。

最佳答案

您不应该直接使用自动增量值,因为这总是会导致您所描述的竞争条件。

相反,您应该插入一条记录并检查 LAST_INSERT_ID() 以查看向您的行颁发了哪个标识符。然后可以将该值安全地转置到其他表中。

好消息是 LAST_INSERT_ID() 值代表每个连接最后一行的插入 ID,因此应该不存在竞争条件的风险。

关于mysql - 阻止两个连接运行相同的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12918289/

相关文章:

mysql - 使用 LAST_INSERT_ID 插入

Java:在 SQL 数据库中对事件执行某些操作?

php - 使用 php 语言使用准备好的语句的通用 select(mysql) 函数

php - 如何给每个元素一个特定的 url - PHP

c# - Azure MySql 异常 : The connection string may not be right. 请访问门户以获取引用

php - 通过 HTML 链接启动表单来更改 MySQL 数据?

php - 在网络服务器上通过PHP下载文件问题

mysql - 连接多个表(特殊情况)

php - 使用一些使用数据库连接的类

mysql-server 无法在 Linux 上安装