Retrieving PK of inserted row

Поиск
Список
Период
Сортировка
От woger151
Тема Retrieving PK of inserted row
Дата
Msg-id 001c01c74460$965572c0$6501a8c0@apollosjf
обсуждение исходный текст
Ответы Re: Retrieving PK of inserted row  (cedric <cedric@over-blog.com>)
Re: Retrieving PK of inserted row  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
I want to retrieve the primary key, which is a SERIAL, of a row I just
inserted.

In 8.2, I could use RETURNING, but I'm using 8.1.

Reading around, I've seen the following methods discussed:
(1) Within a transation, do the INSERT, and then do a SELECT CURVAL
(2) Not necessarily within a transaction, get a candidate for the pk using
SELECT NEXTVAL, then INSERT the row.
(3) Use LASTVAL

My questions:
* Are any of these methods flawed?
* Is there any reason to prefer (1) to (2)?
* I'm not sure whether LASTVAL is guaranteed to work outside of a
transaction.  Its description in the 8.1 manual starts with "Return the
value most recently returned by nextval in the current session. ..." but I'm
not sure of the formal sense in which "session" is being used.  (I'm
connecting to the DB from mod_php in apache, so I guess "session" could mean
"during the existence of a given db connection," but I'm not sure.)

TIA


В списке pgsql-general по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: PostgreSQL 9.0
Следующее
От: "Willy-Bas Loos"
Дата:
Сообщение: Re: Unauthorized users can see db schema and read functions