关于数据库:乐观锁

乐观锁的惯例操作
select rev from table where id = $id
update table set name=$name, rev=rev+1 where id = $id and rev=$rev
此时有两个线程a和b来批改用户名
分成4中状况
1、

a b
select rev from table where id = $id select rev from table where id = $id
update table set name=$name, rev=rev+1 where id = $id and rev=$rev  rev=2
update table set name=$name, rev=rev+1 where id = $id and rev=$rev  失败

a b
select rev from table where id = $id select rev from table where id = $id
update table set name=$name, rev=rev+1 where id = $id and rev=$rev  rev=2
update table set name=$name, rev=rev+1 where id = $id and rev=$rev  失败

a b
select rev from table where id = $id
update table set name=$name, rev=rev+1 where id = $id and rev=$rev rev=2
select rev from table where id = $id
update table set name=$name, rev=rev+1 where id = $id and rev=$rev rev=3

a b
select rev from table where id = $id
update table set name=$name, rev=rev+1 where id = $id and rev=$rev rev=2
select rev from table where id = $id
update table set name=$name, rev=rev+1 where id = $id and rev=$rev rev=3

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理