0
我在执行中,我SELECT ...
和SELECT ... FOR UPDATE
区分的系统。锁定为选择更新,但不锁定常规选择
常规SELECT ...
用来读取实体,被允许在一个“不正确”的状态(不正确=可能会被更新后的时刻)
的SELECT ... FOR UPDATE
总是用于读取与目标对象进行编辑它,所以它应该返回对象的正确状态。
现在我试图执行以下操作: 只要SELECT ... FOR UPDATE
语句读取对象,就会锁定对同一对象的其他SELECT ... FOR UPDATE
查询。但是,常规的SELECT ...
仍然可以工作。
有没有通过使用预定义的锁来做到这一点的方法? 我查看了数据库隔离级别,但我不认为它们是我的问题的一部分。
我使用Java,休眠和SQL数据库。
哪个数据库产品? – kgrittn 2012-08-08 20:08:33
你不需要做任何事情? 'FOR UPDATE'会锁定必要的行,直到你提交或回滚。无需在Java中进行显式锁定。另外,当你说一个SQL数据库时,你的意思是SQL Server吗? – 2012-08-08 20:10:13
数据库产品:mysql for update会锁定行,但它也会锁定它们以进行常规选择,这不是我的目的。正确? – joost 2012-08-08 20:17:25