首先, 至少 您应该这样做,以
SELECt ... FOR UPDATE防止其他
SELECT ... FOR[SHARE|UPDATE]访问锁定行。您必须在事务内执行此操作并保持该事务,直到更新最后一行和
commit。
您
SELECT ... FOR UPDATE未 锁定普通行的行
SELECT;他们仍然可以读取未使用
FOR UPDATE或的其他交易
FORSHARE。
更好的是,尝试将整个事情重新表述为一个
UPDATE ...FROM或其他基于集合的操作,在此操作中您可以在单个查询中完成所有工作。通常,它的性能要好于
SELECT ... FORUPDATE随后的
UPDATEs 流。



