JDBC / MySQL在事务中查询和更新

时间:2012-07-31 16:46:42

标签: mysql sql jdbc transactions locking

基本上我们的用户配置算法就像

一样

- 查询新用户 -update数据库显示您有该用户

我想知道如何在已经启动的情况下锁定进程的其他实例执行“读取”步骤的能力。因此它比典型的事务更具攻击性,因为它需要是一个读 - 读锁,当然无关的进程应该能够在不受锁影响的情况下读取。

1 个答案:

答案 0 :(得分:1)

您可以立即运行UPDATE查询,以“窃取”当前服务器的所有非活动用户。

由于单个UPDATE查询始终是原子的,因此这将确保每个用户仅被一个服务器抓取。

由于MySQL不允许您从UPDATE返回更新的行,因此您需要添加一个标识符列来告诉您哪些行“被盗”。
每次配置用户时,选择一个GUID,在UPDATE语句中将标识符列设置为该GUID,然后选择SELECT行,它们仍然具有该GUID。