V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
kaner
V2EX  ›  问与答

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

  •  
  •   kaner · Jun 18, 2016 · 2022 views
    This topic created in 3613 days ago, the information mentioned may be changed or developed.
    积分存储在 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
       Jun 18, 2016
    直接不见了?
    yeyeye
        2
    yeyeye  
       Jun 19, 2016
    锁表 其他查询就会等着这个操作完成后 才能查询到 你的问题就解决了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   869 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 21:37 · PVG 05:37 · LAX 14:37 · JFK 17:37
    ♥ Do have faith in what you're doing.