【发布时间】:2010-04-19 14:28:10
【问题描述】:
关于“UPDATE ... SET .. WHERE ...”语句的原子性,我有一个相当基本和一般性的问题。
有一个表(没有额外的约束),
+----------+
| id | name|
+----------+
| 1 | a |
+----+-----+
现在,我将“同时”(同时)执行以下 4 条语句。
UPDATE table SET name='b1' WHERE name='a'
UPDATE table SET name='b2' WHERE name='a'
UPDATE table SET name='b3' WHERE name='a'
UPDATE table SET name='b4' WHERE name='a'
表更新时是否只会执行一条 UPDATE 语句? 或者,是否有可能不止一个 UPDATE 语句可以真正更新表?
我应该需要额外的事务或锁来让只有一个 UPDATE 将值写入表吗?
谢谢
[编辑] 4 个 UPDATE 语句从不同的进程并行执行。 [编辑] 使用 Postgresql
【问题讨论】:
-
在第一个语句之后,其他人都不会做任何事情,因为您已将
name从 a 更改为 b1。跨度>