如果多线程同时查询以下SQL到数据库(postgresql):
UPDATE mytable SET n=n+1 WHERE n=0;
"n"最终是否会大于 1
更新将采用写锁定,因此实际上不会在表上发生并发操作。
n will not be greater than 1.
update mytable set n=n+1 where n=0;
"n"最终是否会大于 1
不,它不会"大于 1",因为将1
添加到0
会产生1
。
所以n
将等于1
,而不是"大于1"。
是的,可以保证在更新完成后,以前为 0(零)的所有值都是 1(一),没有错误。