how to get the primary key of a freshly inserted row in a stored procedure - Mailing list pgsql-general

From stuart@zapata.org (Stuart robinson)
Subject how to get the primary key of a freshly inserted row in a stored procedure
Date
Msg-id e6ca726c.0208042211.5fd92353@posting.google.com
Whole thread Raw
Responses Re: how to get the primary key of a freshly inserted row  (Darren Ferguson <darren@crystalballinc.com>)
List pgsql-general
I'm writing a PL/pgSQL function that will insert a row and return its
id. Right now I just do a select after the insert to get the id of the
new row (see example code below). But I'm guessing that there's a
better way. Any recommendations?

CREATE FUNCTION foo(VARCHAR, VARCHAR)
RETURNS INTEGER
AS '
   DECLARE
     p1 ALIAS FOR $1;
     p2 ALIAS FOR $2;
     v_id INTEGER;
   BEGIN
     INSERT INTO foo (a, b) VALUES (p1, p2);
     SELECT id
       INTO v_id
       FROM foo
      WHERE a = p1 AND
            b = p2;
   RETURN v_id;
   END;
'
LANGUAGE 'plpgsql';

Thanks in advance.

--
Stuart Robinson [stuart@zapata.org]

pgsql-general by date:

Previous
From: "C. Miller"
Date:
Subject: List of user-created tables?
Next
From: Jim
Date:
Subject: Primary Key: How Do I Generate One For Insert ...