From: Zeljko Trogrlic <zeljko@technologist.com>
To: Mark Dzmura <mdz@digital-mission.com>
To: pgsql-interfaces@postgreSQL.org <pgsql-interfaces@postgreSQL.org>
Subject: Re: obtaining primary key/rowid following insert, redux...
Date: Mon, 11 Sep 2000 09:03:07 +0200
Message-ID: <4.1.20000911090110.018637e0@192.168.0.7> (raw)
In-Reply-To: <39B70836.94523C33@digital-mission.com>
nextval() is the solution to your problems. currval() won't help, all
users will get same previous value.
At 05:15 7.9.2000 , Mark Dzmura wrote:
>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
>
>
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-interfaces@postgresql.org
Cc: zeljko@technologist.com, mdz@digital-mission.com
Subject: Re: obtaining primary key/rowid following insert, redux...
In-Reply-To: <4.1.20000911090110.018637e0@192.168.0.7>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox