Re: [GENERAL] How to get seq after insert

From: "Ross J(dot) Reedstrom" <reedstrm(at)rice(dot)edu>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: [GENERAL] How to get seq after insert
Date: 1999-04-20 16:32:48
Message-ID: 371CAC30.F1768700@rice.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)oumail(dot)openu(dot)ac(dot)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(at)rice(dot)edu>
NSBRI Research Scientist/Programmer
Computer and Information Technology Institute
Rice University, 6100 S. Main St., Houston, TX 77005

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Ross J. Reedstrom 1999-04-20 16:53:24 Re: [GENERAL] How to get seq after insert
Previous Message amarof 1999-04-20 16:20:22 help