在乐观锁的一些文档中,会提到用版本号实现乐观锁。
例如在表中加一个 version 字段,类似下面的方式:
create database blog_db;
create table `user_info` (
`id` bigint not null auto_increment,
`name` varchar(45) not null default '',
`version` bigint not null default 0 comment '数据版本号',
primary key (`id`)
) engine = InnoDB default charset = utf8mb4;
如果要更新某条数据的 name 字段,乐观锁会这样做:
update user_info
set
name = 'xxx',
version = version + 1
where
id = 10
and verison = 0
;
这里的版本号,就是一条数据的版本号,表明了数据的修改次数。
修改版本号的更简单方式,是 where 条件中不指定当前 version 值:
update user_info
set
name = 'xxx',
version = version + 1
where
id = 10
;