我正在研究java hibenrate中的restful web服务,因为当客户端请求服务时,它需要更新MySQL表中占用的行并提供该记录。
我的表格看起来像
ID Name Occupied_Status
1 Vicky 0
2 Rocky 0
我需要将第一条记录更新为Occup_status为1.
更新表set occupied_status = 1其中id = 1
和
从表中选择*,其中occup_status = 1 limit 1
它一次适用于单个请求。但我的问题是当多个请求同时命中服务时它更新与占用相同的行并返回所有那些请求的相同记录。我需要提供单独的记录任何请求之前没有被占用的每个请求。请帮我解决这个问题。
答案 0 :(得分:0)
首先,您可以使用
update table set occupied_status =1 where id = 1 and occupied_status =0
并测试修改的行数(0表示它不是免费的)
以下内容无法保证返回唯一的行;多个请求总是可以获得相同的行!
select * from table where occupied_status =1 limit 1
您必须使用锁定来读取 - 修改 - 写入并获得唯一的行。