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

2016-06-18 18:40:58 +08:00
 kaner
积分存储在 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 分。

------------
这种情况有可能会遇到么?如果会,解决的办法是是什么?多谢!
1670 次点击
所在节点    问与答
2 条回复
kaner
2016-06-18 18:48:55 +08:00
直接不见了?
yeyeye
2016-06-19 01:06:34 +08:00
锁表 其他查询就会等着这个操作完成后 才能查询到 你的问题就解决了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/286705

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX