From: | David <wizzardx(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Fwd: Getting ID of last-inserted row |
Date: | 2009-05-20 10:35:08 |
Message-ID: | 18c1e6480905200335q9bb1023ube062bfd3018aba8@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
>> 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. There might also be issues (for instance, where you are using
a complex database-handling library), where you can't always guarantee
that your currval() call is made at the right time. But most of the
time it should be fine. Thanks for the reminder.
> 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.
From | Date | Subject | |
---|---|---|---|
Next Message | Ivan Sergio Borgonovo | 2009-05-20 10:49:53 | Re: [Windows] Feedback on PG? |
Previous Message | Peter Geoghegan | 2009-05-20 10:28:49 | Suggested way of associating PG user metadata with record |