我的数据库中有以下数据。
LOGANAME DOWNLOADED
LOGNAME字段告诉我要下载和处理的日志,而DOWNLOADED是成功下载日志后将其设置为true的标志。由于要下载的日志很多,因此我希望运行在多个主机上下载并标记为已下载的日志的过程。因此,基本上,我进行数据库查询以获取DOWNLOADED ='false'的所有日志名称,然后下载它们并设置DOWNLOADED ='true'。现在,当我在多个主机上运行相同的进程时,所有主机都下载所有日志。是否可以通过某种方式对此进行编码,以确保主机不下载相同的日志?
最佳答案
从进程下载任何日志之前,通过触发DOWNLOADED
SQL将true
标志标记为Update
UPDATE TABLENAME SET DOWNLOADED = `true` where DOWNLOADED = `false` AND LOGNAME = LOG_NAME_TO_DOWNLOAD
并检查
UPDATE
语句的输出是否影响了多少行。如果受影响的行数大于0,则继续从该进程下载日志,否则跳过该日志文件并处理另一个。我正在考虑
LOGNAME
是唯一的,这是此列是Primary Key
还是具有所有不同的值。