如果我同时对表中的相同数据运行2个或更多更新查询,该怎么办?

时间:2018-04-17 11:30:03

标签: mysql sql

我需要知道查询是否会排队等待一个接一个地执行,或者这些查询是如何在SQL中执行的?

Ex: 假设一个表具有UserID,Name,PhoneNumber,Address

列的用户

以下是要同时执行的2个查询

Update Users set Address='abc' where UserID=2

Update Users set Address='xyz' where UserID=2

在上述情况下会更新什么地址?是'abc'还是'xyz'?

1 个答案:

答案 0 :(得分:1)

这是一场赛马。 MySQL服务器最后处理的任何查询都是确定列的结束值的查询。它按顺序处理它们,即使您以同意的方式呈现它们也是如此。

没有"同时"更新任何ACID-compliant DBMS中的行。大规模的DBMS系统在内部遇到了几乎难以想象的麻烦,以确保这是真的。

如果您有这两个查询,另一方面,无论执行顺序如何,您都会获得相同的结束值。

  UPDATE Users SET Count=Count+1 WHERE UserID=2
  UPDATE Users SET Count=Count+2 WHERE UserID=2