我有一个task_id表,它有两列:
`tid`:task id,
`state`:0:unfinished,1:processing,2:finished
如果我只使用一个客户机(perl脚本),这很容易:获取一个任务id,将其更新为
unfinished
,处理它,并在循环中将其更新为processing
。但我计划用几个客户来完成这项任务。两个客户有可能同时获取一个记录,如何避免?
最佳答案
如果mysql表的引擎是innodb,那么它会在更新表记录时锁定该行,这样其他请求就不会与以前的更新冲突。