0

node.jsアプリを heroku にアップロードしたところ、SQL クエリの 1 つが失敗しました。クエリは次のとおりです。

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 に答える