V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kaner
V2EX  ›  问与答

请问, MYSQL 在这种假设的情况下,会不会出现问题?

  •  
  •   kaner · 2016-06-18 18:40:58 +08:00 · 1661 次点击
    这是一个创建于 3066 天前的主题,其中的信息可能已经有所发展或是发生改变。
    积分存储在 user 表中

    要实现的功能是: 积分变动记录

    假设情景:原有积分 0 , 因发帖增加了 5 分,更新用户积分的同时,需要在 积分记录 表中 加入一条记录

    -----------------------------------

    我现在想的逻辑是。


    select score from user where id={id}
    先得到 操作前 的积分。

    其他操作
    其他操作
    其他操作

    upate user set score=score+5 where id={id}
    更新积分。

    最后插入到 log 表中的信息是,增加前积分,增加的积分,增加后积分

    -----------------------------------

    如果上面 ‘其他操作’ 这部分的执行时间变长了。

    同时这期间又有 签到(+10 )这个操作 过来。

    这时会不会出现,插入到 积分记录表 中的信息 不准确

    如下:
    增加前 0 分,增加了 5 分,增加后 5 分。
    增加前 0 分,增加了 10 分,增加后 5 分。

    ------------
    这种情况有可能会遇到么?如果会,解决的办法是是什么?多谢!
    kaner
        1
    kaner  
    OP
       2016-06-18 18:48:55 +08:00
    直接不见了?
    yeyeye
        2
    yeyeye  
       2016-06-19 01:06:34 +08:00
    锁表 其他查询就会等着这个操作完成后 才能查询到 你的问题就解决了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2682 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:36 · PVG 17:36 · LAX 01:36 · JFK 04:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.