0
如果我有两个线程更新在单独的事务数据库与看起来像乐观锁定
线程1个
UPDATE people set id='12346' WHERE name='Jeff'
线程2
UPDATE people SET name = 'Jeff' WHERE id='12345'
显然,语句这里是一场比赛。如果线程1在线程2之前更改了ID,则12345将是无效的ID(假设没有其他人正在使用它)。
我想知道的是,当使用乐观锁定时,这种情况下可能会出现乐观锁定错误(例如,陈旧的记录错误)? UPDATE/WHERE是否构成读写?或者是每个UPDATE执行了一个原子语句(还是因数据库而异)?
更新是SQL Server上的原子语句,我相信大多数其他主要RDBMS –
重复? http://stackoverflow.com/questions/2133393/is-update-with-nested-select-atomic-operation – durron597
这看起来是一个稍微更具体的问题。这似乎只涉及处理并发更新。 – Gian