Fwd: Getting ID of last-inserted row
От | David |
---|---|
Тема | Fwd: Getting ID of last-inserted row |
Дата | |
Msg-id | 18c1e6480905200335q9bb1023ube062bfd3018aba8@mail.gmail.com обсуждение исходный текст |
Ответ на | Getting ID of last-inserted row (David <wizzardx@gmail.com>) |
Ответы |
Re: Getting ID of last-inserted row
|
Список | 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.
В списке pgsql-general по дате отправления: