UPDATE子查询中未强制执行LIMIT子句

时间:2018-10-24 21:43:16

标签: postgresql postgresql-10

自从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
)

1 个答案:

答案 0 :(得分:0)

尝试:

选择...锁定更新跳过

限制?用于更新跳过锁定的功能是9.5中新增的功能。 有了这个概念,每个线程只会看到未锁定以供其他线程更新的记录,因此不会发生争用。