LOCK TABLES tasks_table WRITE; -- locking the table for read/write
-- Selecting a pending task to do
SELECT * FROM tasks_table
WHERE flag = 'pending'
LIMIT 1;
-- In application code (PHP) - get the Primary key value of the selected task.
-- Now update the flag to in_process for the selected task
UPDATE tasks_table
SET flag = 'in_process'
WHERE primary_key_field = $selected_value;
1条答案
按热度按时间dxxyhpgq1#
一种可能的方法是:
您可以更改的数据类型
flag
列到ENUM
键入(如果尚未键入)。它将有三个可能的枚举值:pending
,in_process
,done
.当选择一个
pending
任务要做,做一个明确的LOCK
在table上;以便其他会话无法更新它。代码示例:
最后,不要忘记释放显式锁。
代码: