Re: [GENERAL] get the previous assigned sequence value - Mailing list pgsql-general

From Nikolay Mijaylov
Subject Re: [GENERAL] get the previous assigned sequence value
Date
Msg-id 002001bf4252$a9051fa0$ce2a18c3@skillbrokers.bg
Whole thread Raw
In response to Re: [GENERAL] get the previous assigned sequence value  (Stuart Rison <rison@biochemistry.ucl.ac.uk>)
List pgsql-general
Why you discuss it????
The problem is quite clean and it was solvev many years ago.....


1. Get the *next* sequence value:
select nextval("gogo_seq");
2. Store it into a variable (for example $X)
3. Insert proper data (and and sequence value)
insert into gogo values( $X, 'NMMM', 'mailto:nmmm@nmmm.nu');
4. Use value $X, as u want
insert into gogo_detail values( $X, 'bla bla0');
insert into gogo_detail values( $X, 'bla bla1');
insert into gogo_detail values( $X, 'bla bla2');

Am I clear?

nmmm
--------------------------------------------------------------
The reboots are for hardware upgrades!
"http://www.nmmm.nu; <nmmm@nmmm.nu>

----- Original Message -----
From: Adriaan Joubert <a.joubert@albourne.com>
Cc: Dev Elop <dev@archonet.com>; pgsql-general
<pgsql-general@postgreSQL.org>
Sent: 09 Äåêåìâðè 1999 ã. 15:22
Subject: Re: [GENERAL] get the previous assigned sequence value


> > > With this second method, you'd probably need to beware race
conditions. If
> > > another process inserts a record into mytable after you do but before
you
> > > call currval(), then you'll get the wrong value.
> > >
> > > Not an issue if you've only got one process accessing the table -
probably
> > > is one if you have two or more.
> >
> > I don't think that's true the currval belongs to the process (as it
were)
> > so that what happens is that currval remains unchanged by inserts by
other
> > processes.
> >
> > nextval however is 'affected' meaning that nextval won't just return
> > curval+1, it returns whatever the next sequence item is taking into
> > account the increasses caused by other processes.
> >
> > at least I seem to remember that from previous postings... any
seconders?
>
>
> currval always gives you the most recent sequence value returned by your
> own back-end, so that it is not affected by waht other processes do.
> With nextval it also depends on what cache size you chose. If youchose
> 1, the default, nextval is directly affected by whether other processes
> have doena  nextval. If the caches is larger this is not necessarily the
> case.
>
> Adriaan
>
> ************



pgsql-general by date:

Previous
From: Sascha Ziemann
Date:
Subject: Function arguments
Next
From: Jose Soares
Date:
Subject: Re: [GENERAL] Where is IFNULL?