为了账号安全,请及时绑定邮箱和手机立即绑定

事务 与 更新丢失的问题?

事务 与 更新丢失的问题?

桃花长相依 2019-02-20 19:41:32
先查询某一行的值,然后在更新这个值。在高并发的情况下,A 用户 查出来的值比如是 8,这时候按着8进行处理过程中,有另外的用户B,将这个值改成了10,当A用户再去更新的时候,就会造成数据的更新丢失。 通过对查询更新方法设置事务,加入防重复读的隔离级别,也是解决不了更新丢失问题的。防重复读,只能保证第一次读到是8,后面在怎么读这条记录,结果都是8。 解决这个问题,在mysql 数据库层面,只有用for update (悲观锁)或是乐观锁来锁住这一行记录。 问题是,对于事务与mysql悲观锁的理解有点混沌了。请高人给指点迷津。
查看完整描述

4 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

WHERE里加条件:

SELECT quantity FROM products WHERE id=3; 假设读到的quantity为8
UPDATE products SET quantity = '10' WHERE id=3 AND quantity=8;
查看完整回答
反对 回复 2019-03-01
?
智慧大石

TA贡献1946条经验 获得超3个赞

开启事务状态下mysql的默认隔离级别已经可以解决这个问题了吧。

查看完整回答
反对 回复 2019-03-01
?
PIPIONE

TA贡献1829条经验 获得超9个赞

事务有4个级别
读提交,读未提交,可重读,串行化
你仔细的描述一下你的需求,我看看!

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 380 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信