Search Postgresql Archives

Re: Does INSERT inserts always at the end ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



florence.henry@obspm.fr (Florence HENRY) wrote:
> 
> Hello,
> 
> well, almost everything is in the subject !
> 
> I have to fill 2 tables (more complicated than in the example !):
> 
> CREATE TABLE A (
>    id serial primary key,
>    foo text);
> 
> CREATE TABLE B (
>    id serial references A,
>    bar text);
> 
> I fill A with :
>    INSERT into A VALUES (DEFAULT, "toto");
> 
> Then I need to retreive the "A.id" that was given to A, in order to give it 
> to B.id. If I was doing this by hand, it would have been quite easy, but I'm
> doing this with a script.

Define what you mean by "with a script."  If you've a db handle open
with, say, Perl's DBI, you could simply do a select on currval() for
the sequence and get it.  This is immune to other transactions.  But
if, by "script" you mean, say, from a shell script, where you're
feeding commands to psql from stdin or some-such, well... I suppose you
could "echo 'mumble; select currval(blurfl)' |psql" and capture it.
(Caveat: I haven't tried this.  I'm just guessing.)

> 
> So, if I make a SELECT id from A; and take the last row, will it *always*
> be the row that I've just inserted.

I was told just a few days ago to always regard data in a table as
"unordered."  Going by that philosophy: No, you cannot.  You
*certainly* cannot if more than one session/task is operating on the
table.

Jim

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux