锁定MySQL选择行,直到运行UPDATE吗?

问题描述

我有一个名为queue_items的表,该表具有3列。

'item' varchar(500) the item that has been queued
'processed_at' a datetime to mark when it has started processing,and
'completed_at' a datetime to mark when it has completed in the queue worker

这是我选择项目的方式,

SELECT `id`,`item` FROM `queue_items` WHERE `processed_at` IS NULL AND `completed_at` IS NULL ORDER BY `id` ASC LIMIT 1

一旦检查它是否存在并且可以被处理,我将执行以下操作:

UPDATE `queue_items` SET `processed_at` = @processedAt WHERE `id` = @id

问题是,在更新processed_at之前,另一个队列工作人员可以拿起我刚刚选择的项目。我该如何阻止这种情况发生?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)