想问一下关于乐观锁的理解
星星误 2018-08-24 09:35:34
1)先读task表的数据(实际上这个表只有一条记录),得到version的值为versionValue
2)每次更新task表中的value字段时,为了防止发生冲突,需要这样操作
update task set value = newValue,version = versionValue + 1 where version = versionValue;
只有这条语句执行了,才表明本次更新value字段的值成功
对于上面的定义解释 ,就着两个人同时借阅最后一本书加乐观锁的操作,我的问题是:
当A浏览器 和 B浏览器同时借阅最后一本书时,只有一个能借阅的到,
开始借阅之前 , A B 浏览器的version版本均为一
借阅之后,因为每次更新,version值会加一,
假如A借阅到了,
那么version = versionValue + 1 此时A的version值为2
那么B在借阅这本书时 A已经借阅到了,所以version = versionValue + 1 =2+1=3
但是这个跟第一次更新拿到的version值不相等 ,则被视为过期数据,驳回B浏览器的借阅请求
请问我这样理解可以吗?
还有能告诉我 update task set value = newValue,version = versionValue + 1 where version = versionValue;中 versionValue,version,newvalue,value的值是多少吗 ?我有点混……