0

我刚刚将我的node.js应用程序上传到 heroku,我的一个 sql 查询失败了。查询是:

INSERT INTO countries (name, user_id, created_timestamp)
SELECT $1, $2, CURRENT_TIMESTAMP
WHERE NOT EXISTS (SELECT 1 FROM countries WHERE name = $1 FOR UPDATE)

它失败了

错误:子查询中不允许 SELECT FOR UPDATE/SHARE

有谁知道为什么?如果我无法选择更新,是否可以使用解决方法?

4

1 回答 1

1

这可能对您有用:

BEGIN;

LOCK TABLE countries IN SHARE MODE;

INSERT INTO countries (name, user_id, created_timestamp)
SELECT $1, $2, CURRENT_TIMESTAMP
WHERE NOT EXISTS (SELECT * FROM countries WHERE name = $1);

COMMIT;

这个密切相关的答案中的解释和链接。

于 2012-04-05T17:31:28.107 回答