假设我有更新查询,例如:
UPDATE accountstable SET bal = bal - 0.5 where bal >= 0.5 and id = 1
仅当用户帐户的余额大于或等于0.5时才从用户帐户中减去0.5。
如果查询运行两次,两个实例几乎都在同一时间开始,那么MySQL会并行运行两个查询,还是以顺序/排队的方式运行(等待第一个实例在运行第二个实例之前完成)?
如果以顺序方式运行,那么余额为0.5的帐户在两次查询完成后的余额是0还是-0.5?
答案 0 :(得分:0)
这是一场竞争条件:)......请阅读有关如何打击它的信息:
简而言之,您可以使用交易来防范它。