Re: [GENERAL] How to get seq after insert

Поиск
Список
Период
Сортировка
От Ross J. Reedstrom
Тема Re: [GENERAL] How to get seq after insert
Дата
Msg-id 371CAC30.F1768700@rice.edu
обсуждение исходный текст
Ответ на RE: [GENERAL] How to get seq after insert  (Michael J Davis <michael.j.davis@tvguide.com>)
Список pgsql-general
Michael J Davis wrote:
>
> If two users insert into the same table at the same time, one of the users
> will get the wrong currval back.  I still believe that getting the nextval
> first is the safest way.  It may create holes when an insert fails, but this
> is better than getting back the wrong curval.

No, as Herouth pointed out, currval is multiuser-safe: it returns the
last value given in the current session, and every user get's their own
session. I just tried it out in two psql sessions to a test sequence -
no matter how many calls to nextval I do in one window, the currval in
each gives the write answer.

Ross

>
>         -----Original Message-----
>         From:   Herouth Maoz [SMTP:herouth@oumail.openu.ac.il]>
>         To make a long story short, the best way is to let the insert
> statement use
>         the defaulet, and then use currval( 'seq_name' ). This gives you the
> last
>         value given in the current session. It is multiuser-safe, etc.
>

--
Ross J. Reedstrom, Ph.D., <reedstrm@rice.edu>
NSBRI Research Scientist/Programmer
Computer and Information Technology Institute
Rice University, 6100 S. Main St.,  Houston, TX 77005

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

Предыдущее
От: Michael J Davis
Дата:
Сообщение: RE: [GENERAL] How to get seq after insert
Следующее
От: "Ross J. Reedstrom"
Дата:
Сообщение: Re: [GENERAL] How to get seq after insert