数据版本号


#软件架构与思考#


在乐观锁的一些文档中,会提到用版本号实现乐观锁。

例如在表中加一个 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
;

( 本文完 )