obtaining primary key/rowid following insert, redux...

Поиск
Список
Период
Сортировка
От Mark Dzmura
Тема obtaining primary key/rowid following insert, redux...
Дата
Msg-id 39B70836.94523C33@digital-mission.com
обсуждение исходный текст
Ответы Re: obtaining primary key/rowid following insert, redux...  (Zeljko Trogrlic <zeljko@technologist.com>)
Re: obtaining primary key/rowid following insert, redux...  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-interfaces
Peter:

Trying to solve my problem mentioned in the email of half an hour ago, I searched
through the archives of the interface list and found some of your replies suggesting
using "currval()" to get the last value assigned from a sequence...  However,
here's what happens in a good database with multiple in-use sequences:

db=# select currval('foo_foo_id_seq');
ERROR:  foo_foo_id_seq.currval is not yet defined in this session

As an alternative, I discovered that I can get the value this way:

db=# select last_value from foo_foo_id_seq;
last_value
---------
              27

My questions are, (1) why does the currval() approach give the error message, and
(2) is it OK to use my alternative??

Finally, as far as I can tell, there is a real race condition problem here in a multiple-connection
scenario (e.g. another task can cause the sequence to be incremented between the insert
and the select) - but wrapping a transaction around the insert and select should
take care of it... Thoughts??

Thanks,
Mark Dzmura


Вложения

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

Предыдущее
От: Zeljko Trogrlic
Дата:
Сообщение: JDBC source and CVS
Следующее
От: Ken Kachnowich
Дата:
Сообщение: Performance issue with JDBC