2
我希望得到此工作,但Postgres不喜歡在此類插入中使用WHERE
子句。如果Postgres中尚不存在記錄,則插入值
INSERT INTO keys(name, value) VALUES
('blah', 'true')
WHERE NOT EXISTS (
SELECT 1 FROM keys WHERE name='blah'
);
我希望得到此工作,但Postgres不喜歡在此類插入中使用WHERE
子句。如果Postgres中尚不存在記錄,則插入值
INSERT INTO keys(name, value) VALUES
('blah', 'true')
WHERE NOT EXISTS (
SELECT 1 FROM keys WHERE name='blah'
);
在Postgres裏,有一個非常好的辦法做到這一點:
INSERT INTO keys(name, value)
SELECT 'blah', 'true'
WHERE NOT EXISTS (
SELECT 1 FROM keys WHERE name='blah'
);
希望helps.-
在PostgreSQL 9.5現在可以使用on conflict do nothing
insert into KEYS (name, value) values (
'blah', 'true') on conflict (name) do nothing;
它打敗了我爲什麼突然我們不在這裏使用VALUES ....我看了很多地方找到人們使用VALUES的地方,bu似乎用「SELECT」代替。超混淆? – PascalVKooten
@PascalvKooten,因爲如果我們找不到密鑰,我們需要''WHERE''來使我們的值選擇無效。 – VoidMain