select id, balance, version from account where id="1";
查询结果:id=1, balance=1000, version=1
update account
set balance=balance+100, version=version+1
where id="1" and version=1
select id, balance, version from account where id="1";
查询结果:id=1, balance=1100, version=2
操作员B操作如下:
select id, balance, version from account where id="1";
查询结果:id=1, balance=1000, version=1
#操作员A已修改成功,实际account.balance=1100、account.version=2,操作员B也将版本号加一(version=2)试图向数据库提交数据(balance=950),但此时比对数据库记录版本时发现,操作员B提交的数据版本号为2,数据库记录当前版本也为2,不满足 “提交版本必须大于记录当前版本才能执行更新 “的乐观锁策略,因此,操作员B的提交被驳回。
update account
set balance=balance-50, version=version+1
where id="1" and version=1
select id, balance, version from account where id="1";
查询结果:id=1, balance=1100, version=2