1
我在我的MySQL DB中有一个表,它基本上包含“cron”类任务。基本上用户访问一个页面,脚本(php)检查数据库cron表,获取最新的5个“可用”结果并执行与任务相关的脚本。如何确保MySQL选择不会干扰?
我现在预见的问题是2个用户可能会得到相同的任务。请注意,目前我首先运行一个UPDATE查询,它将5个任务分配给当前用户。之后,我执行一个SELECT查询以获得分配给当前用户的5个任务,当他完成后,我将任务标记为已完成。
理论上没有2个用户应该得到相同的任务,但我不确定。我很简单地想知道,如果MySQL可能有一个构建机制来确保这一点,或者是否有已知的方法?
谢谢。
谢谢,我已经阅读了交易记录,并且据我所知,这只能防止数据被提交,除非所有查询都已完成。我不明白这是如何防止其他用户接收到相同的数据库结果?没有办法确定是否有其他用户正在使用相同的结果。 – Naatan 2011-03-21 14:45:08
Hello Naatan,阅读关于表锁的mysql手册,它可能会帮助你 – julioc 2011-03-21 15:14:23
如果有未提交的更改,数据库将锁定受影响的行或表。该锁将阻止对这些对象的进一步读取和写入,直到提交更改。 – 2011-03-21 15:16:23