我需要根据PostgreSQL 8.4中子查询的结果以原子方式更新行。在PostgreSQL 9.2中,这很有效:
UPDATE item SET status = 1 WHERE id IN
(SELECT id FROM item WHERE status = 3 LIMIT(1) FOR UPDATE) RETURNING ID;
但是在PostgreSQL 8.4上我出现以下错误信息:
ERROR: SELECT FOR UPDATE/SHARE is not allowed in subqueries
什么是8.4的好替代品?
答案 0 :(得分:3)
您无需选择更新。它会在您的查询中自动完成。