Search Postgresql Archives

Re: Getting ID of last-inserted row

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 20, 2009 at 4:35 AM, David <wizzardx@xxxxxxxxx> wrote:
>>> I never found an adequate (simple and efficient) method for getting
>>> the primary key ID of the just-inserted row, and usually used
>>> transactions and "select last value, ordered by id"-type queries to
>>> get the last id value, or other ugly logic.
>>
>> use currval() instead, see
>> http://www.postgresql.org/docs/current/static/functions-sequence.html
>> --
>
> I think I researched that before also, but I wasn't sure at the time
> how safe it was against race conditions. Although I see now (reading
> the docs again) that it is tracked for different sessions so it should
> be safe.

It is.

>> Also, you can do insert....returning... (as of version 8.2, I think):
>>
>> INSERT INTO clients (id, name)
>>  VALUES (nextval('clients_id_seq'), 'John Smith')
>>  RETURNING id;
>
> Thanks. I think I saw that too, not too long ago, but forgot about it.
> Some of the PostgreSQL services I use are on older versions, so I need
> to use older syntax. But, this will be useful when the db version is
> guaranteed to be recent. Thanks also for your reminder.

The one thing returning makes easy is getting the return id of multiple records.

insert into tablea values (val),(val),(val),(val) returning id;

will return a set of 4 different ids, not just one.  And if there's a
gap in the sequence you'll not get the wrong numbers.

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux