Thread: Is there a solution for "SELECT OR INSERT"

Is there a solution for "SELECT OR INSERT"

From
"Stefan Becker"
Date:
given a simply table table like this:

create table MyTabl 
(id serial,lname varchar,primary key (id)
)

I am trying to return the Primary-Key for a given
row regardless of the wanted row already being 
in the table.

using something like:

select coalesce 
( (select id from MyTabl where lname='wanted'), (insert into MyTabl (lname) values ('wanted') returning id)
) as id;

the above doesn't allow the insert..returning even thow
a similar select statement would be okay.
Is there a way to get the ID row OR create a new one in
ONE single statement?

my best regards and thank-you 
for your time....

Stefan





Re: Is there a solution for "SELECT OR INSERT"

From
Florian Weimer
Date:
* Stefan Becker:

> Is there a way to get the ID row OR create a new one in
> ONE single statement?

You could create a stored procedure.  But if you have concurrent
inserts, locking is a bit tricky.

--
Florian Weimer                <fweimer@bfk.de>
BFK edv-consulting GmbH       http://www.bfk.de/
Kriegsstraße 100              tel: +49-721-96201-1
D-76133 Karlsruhe             fax: +49-721-96201-99