How to insert record only if primary key does not exist

From: "Andrus" <kobruleht2(at)hot(dot)ee>
To: <pgsql-general(at)postgresql(dot)org>
Subject: How to insert record only if primary key does not exist
Date: 2012-06-30 13:02:23
Message-ID: 245B331DA82D498EAE7B90CFE5F469FE@dell2
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Table is defined as

CREATE TABLE firma1.klient (
kood character(12) NOT NULL DEFAULT nextval('firma1.klient_kood_seq'::regclass),
....
);

How to insert record to this table only if primary key does not exist ?
I tried code below but got strange error as shown in log file.
Why this error occurs ?

Andrus.

2012-06-30 15:51:04 EEST ERROR: duplicate key value violates unique constraint "klient_pkey"
2012-06-30 15:51:04 EEST DETAIL: Key (kood)=(20037 ) already exists.
2012-06-30 15:51:04 EEST STATEMENT: insert into klient (
kood,
nimi,
tanav,
piirkond,
postiindek
)
select ((E'20037')), ((E'Statoil Fuel & Retail')), ((E'')), ((E'10148 nnn')),((E''))
from klient
where not exists (select 1 from klient where kood =((E'20037')))

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2012-06-30 14:18:59 Re: how to return results from code block
Previous Message Pavel Stehule 2012-06-30 10:26:37 Re: how to return results from code block