From: | "postgresql" <pgsql(at)symcom(dot)com> |
---|---|
To: | "Bruce Momjian" <pgman(at)candle(dot)pha(dot)pa(dot)us>, "PgSQL-SQL" <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: serial type; race conditions |
Date: | 2001-03-29 14:41:23 |
Message-ID: | 200103291431.f2TEVwK25942@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
How does currval work if you are not inside a transaction. I have
been experimenting with inserting into a table that has a sequence.
If the insert fails (not using a transaction) because of bad client input
then the next insert gets the proper next number in the sequence.
given sequence 1,2,3,4,5 exists
insert into table date 1/111/01 (obviously wrong) insert fails...
try again with good data, insert succeeds and gets number 6 in the
sequence.
i'm getting what I want. A sequence number that does not increment
on a failed insert. However, how do I get the assigned sequence
number with currval when I am not using a transaction? What
happens when multiple users are inserting at the same time?
I am trying to create a sequence with out any "missing" numbers. If
there is a failure to insert, and a sequence number is "taken". I want
the empty row.
Thanks, .... it is getting clearer....
Ted
-----Original Message-----
From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: jkakar(at)expressus(dot)com
Date: Mon, 26 Mar 2001 16:47:37 -0500 (EST)
Subject: Re: [SQL] serial type; race conditions
> > Hi,
> >
> > I'm using serial fields to generate IDs for almost all object in my
> > database. I insert an empty row, get the CURRVAL() of the
sequence
> > and then update to that value.
> >
> > I had understood (and now, I can't find the reference to back this
> up)
> > that serial is implemented in such a way that race conditions
between
> > DB connections can't happen.
> >
> > Is this true?
>
> Safe. See FAQ item. currval is for your backend only.
>
> --
> Bruce Momjian | http://candle.pha.pa.us
> pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
> + If your life is a hard drive, | 830 Blythe Avenue
> + Christ can be your backup. | Drexel Hill, Pennsylvania
> 19026
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to
> majordomo(at)postgresql(dot)org)
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Perrin | 2001-03-29 14:45:42 | Re: serial type; race conditions |
Previous Message | Bruce Momjian | 2001-03-29 14:36:39 | Re: serial type; race conditions |