如果我有一个包含需要处理的资源(例如URL)的InnoDB表(见下文):
RESOURCE_TABLE {
id int NOT NULL AUTO_INCREMENT,
resource varchar(100) NOT NULL,
process_id int DEFAULT NULL
}
其中未处理的资源将process_id设置为NULL,并且有多个进程争用声明每个资源,我可以这样做:
update RESOURCE_TABLE set process_id={MY_PROCESS_ID} where process_id is NULL order by id ASC LIMIT 1;
为特定流程申请资源?这个更新是原子的,还是我需要创建一个事务?此外,如果我以这种方式申请新资源,资源是否会按顺序声明,而且没有任何空白?