gpt4 book ai didi

mysql — 返回未被其他人更新的行

转载 作者:行者123 更新时间:2023-11-29 18:37:57 26 4
gpt4 key购买 nike

我有一个服务,很多人会并行访问数据库。每次,每个人都会请求 50 条尚未处理的记录。例如,

select * from service where update = -1 limit 50;

然后手动更新它们(这意味着它们将被分配不同的值)。我想做的是返回 50 条不同的记录给每个人进行更新。实现这一目标的正确方法是什么?

我已经尝试过

SELECT ... LIMIT 50 FOR UPDATE;

但它似乎会阻塞整个数据库。

最佳答案

不要SELECT ... FOR UPDATE,而是有一个专门用于声明的列。这是DEFAULT NULL,但您将使用一些随机或唯一标识符填充它。 UUID 或其他明确的值就可以正常工作。

例如:

UPDATE service SET claimed=? WHERE claimed IS NULL LIMIT 50

注意响应中修改的行数。如果它大于零,那么您已声明某些内容:

SELECT * FROM service WHERE claimed=?

这将获取之前声明的值。

关于mysql — 返回未被其他人更新的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45124467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com