I have a table:
CREATE TABLE rechner
(
id_r int4 NOT NULL DEFAULT nextval('rechner_id_r_seq'::regclass),
name text,
CONSTRAINT rechner_pkey PRIMARY KEY (id_r)
)
CREATE UNIQUE INDEX rechner_name
ON rechner
USING btree
(name);
and want to have the existing or new id of 'newobjekt'
CREATE OR REPLACE FUNCTION getrechnerid( text)
RETURNS int4 AS
' DECLARE
result int4;
BEGIN
select id_r from rechner where name=upper($1) into result;
IF not FOUND THEN
select nextval(''swcheck_id_check_seq'') into result;
insert into rechner (id_r, name) values (result, upper($1));
END IF;
return result;
END;
'
LANGUAGE 'plpgsql' VOLATILE;
#############
so on an empty table:
select getrechnerid('LEBERWURST');
-> 1
select getrechnerid('FISCH');
-> 2
select getrechnerid('LEBERWURST');
-> 1
everything is fine. BUT: I feel that this a SO USUAL request (please, give me the new primary key of that just inserted beast), that there may be a simpler way, and I am just to blind to see.
Is there really one?
Harald
--
GHUM Harald Massa
persuasion python postgresql
Harald Armin Massa
Reinsburgstraße 202b
70197 Stuttgart
0173/9409607