我正在使用 java hibenrate 开发 restful web 服务,因为当客户端请求服务时,它需要更新 MySQL 表中占用的行并提供该记录。
我的 table 看起来像
ID Name Occupied_Status
1 Vicky 0
2 Rocky 0
我需要更新第一个记录是 occupied_status 为 1。
update table set occupied_status =1 where id = 1
和
select * from table where occupied_status =1 limit 1
它一次适用于单个请求。但我的问题是当多个请求同时访问服务时,它会更新与占用相同的行并为所有这些请求返回相同的记录。我需要为每个请求之前没有被任何请求占用。请帮我处理这个问题。
最佳答案
首先,你可以使用
update table set occupied_status =1 where id = 1 and occupied_status =0
并测试修改的行数(0 表示它不是免费的)
以下不保证返回唯一行;多个请求总是可以得到同一行!
select * from table where occupied_status =1 limit 1
您必须使用锁定来读取-修改-写入并获得唯一的行。
关于java - 在java mysql中同时处理多个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36300550/