java - 在java mysql中同时处理多个请求

标签 java mysql hibernate web-services

我正在使用 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/

相关文章:

java - SimpleDateFormat 模式到 Java 正则表达式的转换

mysql - SQL - 比较和更新表的行?

java - hibernate createAlias with 子句生成错误的查询

java - 如何在 Android 中使用 HTTPS 发布

java - 如何将spring MVC应用程序注册到spring boot admin

java - 不安全操作如何解决?

mysql - 在全局 ORDER 子句中使用多个 SELECT 的问题

php - 无法在php中创建表

Java+ hibernate : Fire property change events when object retrieved from database

java - Hibernate、Java 9 和 SystemException