如果Postgres中不存在记录,则插入值

时间:2012-12-17 16:55:49

标签: sql postgresql

我想让这个工作,但Postgres不喜欢在这种类型的插入中使用WHERE子句。

  INSERT INTO keys(name, value) VALUES
    ('blah', 'true')
  WHERE NOT EXISTS (
    SELECT 1 FROM keys WHERE name='blah'
  );

2 个答案:

答案 0 :(得分:28)

在Postgres中,有一种非常好的方法:

INSERT INTO keys(name, value) 
    SELECT 'blah', 'true'
WHERE NOT EXISTS (
    SELECT 1 FROM keys WHERE name='blah'
);

希望有所帮助.-

答案 1 :(得分:13)

在Postgresql 9.5中,您现在可以使用on conflict do nothing

insert into KEYS (name, value) values (
'blah', 'true') on conflict (name) do nothing;