Re: how to get the primary key of a freshly inserted row - Mailing list pgsql-general

From Darren Ferguson
Subject Re: how to get the primary key of a freshly inserted row
Date
Msg-id Pine.LNX.4.44.0208061502290.28899-100000@thread.crystalballinc.com
Whole thread Raw
In response to how to get the primary key of a freshly inserted row in a stored procedure  (stuart@zapata.org (Stuart robinson))
List pgsql-general
CREATE FUNCTION foo(VARCHAR,VARCHAR) RETURNS INTEGER AS '
DECLARE
  p1 ALIAS FOR $1;
  p2 ALIAS FOR $2;
BEGIN
  INSERT INTO foo (a,b) VALUES (p1,p2);
  RETURN CURRVAL('id_seq');
END;' LANGUAGE 'plpgsql';

If you use a sequence which it appears you do then just replace id_seq
with the id of your sequence

HTH

On 4 Aug 2002, Stuart robinson wrote:

> 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]
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>

--
Darren Ferguson


pgsql-general by date:

Previous
From: "scott.marlowe"
Date:
Subject: Re: URGENT: Database keeps crashing - suspect damaged RAM
Next
From: Ralph Graulich
Date:
Subject: Re: Cannot use more than 16 attributes in an index