18

これを機能させたいのですが、PostgresはWHEREこのタイプの挿入に句を含めるのが好きではありません。

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

2 に答える 2

59

Postgresには、それを行うための本当に良い方法があります。

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

お役に立てば幸いです。-

于 2012-12-17T17:02:20.330 に答える
25

Postgresql 9.5では、次を使用できるようになりましたon conflict do nothing

insert into KEYS (name, value) values (
'blah', 'true') on conflict (name) do nothing;
于 2015-12-09T15:23:24.183 に答える