首页 > 编程知识 正文

乐观锁代码示例,数据库的乐观锁

时间:2023-05-03 21:57:16 阅读:175798 作者:3752

乐观锁(一)乐观锁是为了解决线程冲突时的脏读、幻读等,而乐观锁就是为了解决这个问题而产生的。 由于乐观锁定默认情况下不会发生数据冲突,因此它会在提交和更新数据时正式检测是否存在数据冲突,如果发现冲突,它会向用户返回错误消息,让用户决定该怎么办。

)二)方法version版本控制的方法一般是在数据库中添加version字段,在修改数据之前查询version的版本号,然后在修改时随该version一起修改。 例如

selectversionfromuserwhereuser.id=id从上面的sql代码中获取当前要更改的字段的verison

带上进行update操作时查询的版本号。

updatefromusersetuser.name=nameanduser.version=user.version1where user.id=idan duser.version=version这样就不会发生冲突

)3)在具体情况中,假设有2个线程,线程a和线程b,两个线程都变更数据库的某个字段

线程a在更改字段之前检查该字段的版本。 线程a试图更改时,线程b突然来了。 然后,线程b也检查了该字段的版本。 而且,此时,没有发生新的日程。 线程b继续执行更改操作,并在更改时执行上面的sql代码2。 version与出现查询的version相同。 此时,线程b结束,线程a继续进行修改操作。 由于线程b对version执行了一次操作,因此线程a以前查询的version与当前数据库的实际version不同,此时无法修改。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。