自从9.4升级到Postgres 10之后,我遇到了一个奇怪的问题。这个参数化的更新查询曾经可以可靠地工作,但是现在它定期(但并非总是)无法强制执行LIMIT
子句
UPDATE tablename SET someValue = ? WHERE myKey IN (
SELECT myKey
FROM tablename
WHERE status = 'good'
ORDER BY timestamp
ASC LIMIT ? FOR UPDATE
)
答案 0 :(得分:0)
尝试:
选择...锁定更新跳过
限制?用于更新跳过锁定的功能是9.5中新增的功能。 有了这个概念,每个线程只会看到未锁定以供其他线程更新的记录,因此不会发生争用。