MySQL InnoDB更新 - 选择?

时间:2012-11-10 17:13:33

标签: mysql innodb

我正在使用Gearman工作人员接受来自MySQL数据库的工作。这些工人获得工作的程序如下:

SELECT foo, bar FROM jobs WHERE job_id = 'foobarbaz' AND status = 'WAITING';

现在,如果该查询返回一行,那么工作人员知道它已被赋予有效的作业并继续处理它。但当然风险在于,在工作时,另一名工人也可能担任这项工作。

为了防止这种情况,我在想如何以原子方式选择继续执行作业所需的数据,以及如果它有效则更新它的状态?我想或许可以使用作业ID对行状态进行UPDATE,然后测试受影响的行,但不确定是否有更合理的方法可以解决它。

感谢。

0 个答案:

没有答案