Re: how to get the primary key of a freshly inserted row
От | Darren Ferguson |
---|---|
Тема | Re: how to get the primary key of a freshly inserted row |
Дата | |
Msg-id | Pine.LNX.4.44.0208061502290.28899-100000@thread.crystalballinc.com обсуждение исходный текст |
Ответ на | how to get the primary key of a freshly inserted row in a stored procedure (stuart@zapata.org (Stuart robinson)) |
Список | 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 по дате отправления: