通常我们采用引入一个version版本号来作为乐观锁,提交的时候校验这个版本号,那么此时有两种方式
方式一,程序中对版本加一,即判断条件为数据库版本小于当前传入的版本:
update set name = ${name} and version = ${version} where id = ${id} and version < ${version}
方式二,通过数据库进行加一,即判断条件为数据库版本等于当前传入的版本:
update set name = ${name} and version = version + 1 where id = ${id} and version = ${version}
请问下,这两种方式有什么不同吗,因为我看几乎所有的乐观锁都是用第二种方式来实现的
结果是一样的,方法二比较好理解点罢了。
很多情况下,乐观锁并不需要version,比如你要UPDATE的是name这一列,那就可以把name当成version,这样就可以写成:
我也不知道用方法一该怎么来写呢。