首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止两个连接运行同一查询

停止两个连接运行同一查询
EN

Stack Overflow用户
提问于 2012-10-16 23:34:18
回答 2查看 78关注 0票数 0

我在我的站点中使用这个查询来获取下一个Auto-Increment,但问题是两个或更多的连接可以同时运行这个查询,并且它们具有相同的AUto-Increment值。

代码语言:javascript
复制
SHOW TABLE STATUS LIKE 'TABLE_ORDERS';

有没有办法阻止两个或更多的连接同时运行这个查询?

非常感谢!

代码语言:javascript
复制
Edit

然后,此自动递增的值用于将记录存储在另一个表‘Receipt’中。如果两个连接从Orders表中获得了相同的Auto-increment值,我最终在Receipt表中有两行具有相同的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-17 00:26:51

您不应该直接使用自动增量值,因为这将不可避免地导致您所描述的各种竞争条件。

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-10-16 23:37:09

您可以将其放在存储过程中并添加一个

代码语言:javascript
复制
SELECT SLEEP(2);

在里面。

,当需要暂停之前的查询时,例如当从节点重新连接到主节点时,它非常有用。

MySQL SLEEP

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12918289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档