誰でもPostgresの構文の問題を助けることができますか?レコードを挿入しようとしていますが、その前に、それが存在しないことを確認するために、WHERE... AND
を使用してください。Postgres:WHERE ... AND構文の問題
=# \d domes_manor_place;
id | integer | not null default nextval('domes_manor_place_id_seq'::regclass)
manor_id | integer | not null
place_id | integer | not null
=# select * from domes_manor_place where place_id='13621';
24017 | 22276 | 13621
OK、私たちはmanor_id=22398
とplace_id=13621
とレコードがないことを知っています。
=# INSERT INTO domes_manor_place (manor_id, place_id) SELECT 22398, 13621
WHERE (22398 NOT IN (SELECT manor_id FROM domes_manor_place)) AND
(13621 NOT IN (SELECT place_id FROM domes_manor_place));
INSERT 0 0
私の構文には何が問題なのでしょうか?
SELECTの条件とUNIQUE制約には大きな違いがあります。条件は一意性を全く提供しませんが、異なるトランザクションは同じ瞬間に同じデータを挿入できます。 –