Re: get last oid - Mailing list pgsql-odbc

From Leeuw van der, Tim
Subject Re: get last oid
Date
Msg-id DD0DC14935B1D211981A00105A1B28DB0A7B4CBE@NL-ASD-EXCH-1
Whole thread Raw
In response to get last oid  ("Ricky" <ricky@babonmultimedia.com>)
List pgsql-odbc
The pattern which I mean is given in the manual pages for create-sequence:

http://www.postgresql.org/docs/current/interactive/sql-createsequence.html


To know the sequence number, do first

SELECT nextval(<sequence-name>);

And store the result somewhere in a variable of your program.

Then do the insert with that variable-nr as the key-value.

regards,

--Tim

-----Original Message-----
From: pgsql-odbc-owner@postgresql.org
[mailto:pgsql-odbc-owner@postgresql.org]On Behalf Of Ropel
Sent: vrijdag 19 december 2003 14:58
To: postgre
Subject: Re: [ODBC] get last oid


... You can't: some other task can do another insert between your insert and
your select, so you get the serial
of the other record, not yours !

----- Original Message -----
From: "Leeuw van der, Tim" <tim.leeuwvander@nl.unisys.com>
To: "'Ropel'" <ropel@ropel.it>; "postgre" <pgsql-odbc@postgresql.org>
Sent: Friday, December 19, 2003 1:21 PM
Subject: RE: [ODBC] get last oid


> Hiya,
>
> You get the serial as a result of your select from sequence...
>
> --Tim
>
> -----Original Message-----
> From: pgsql-odbc-owner@postgresql.org
> [mailto:pgsql-odbc-owner@postgresql.org]On Behalf Of Ropel
> Sent: vrijdag 19 december 2003 13:07
> To: postgre
> Subject: Re: [ODBC] get last oid
>
>
> Yes of course, but doing so you have the same old problem: which serial
did
> you get ??
>
> ----- Original Message -----
> From: "Shachar Shemesh" <psql@shemesh.biz>
> To: "Ropel" <ropel@ropel.it>
> Cc: "postgre" <pgsql-odbc@postgresql.org>
> Sent: Friday, December 19, 2003 12:38 PM
> Subject: Re: [ODBC] get last oid
>
>
> > Ropel wrote:
> >
> > >... In a well designed relational Db, every table has a (unique)
primary
> > >key: if so, you don't even need to
> > >know the oid, because the record just inserted is directly reachable
> using
> > >the PK.
> > >If your PK uses sequences, you have to get the next seq value "select
> > >nextval() from seq_xxxxx..." and use the
> > >value obtained for inserting your new row instead of using it as a
> default
> > >value; this way you are protected from
> > >concurrent writing to the DB.
> > >
> > >If you REALLY need the oid from the ODBC connection, I can't help...
> sorry !
> > >
> > >Bye
> > >
> > >Roberto
> > >
> > >
> > >
> > Actually, if you created the sequence implicitly by using the "serial"
> > type, you don't even have to do that. You can simply do this:
> > creating the table:
> > create table foo (index serial not null, a type,  b type.....);
> > inserting into the table:
> > insert into foo (a,b,....)....
> >
> > I.e. - leave the serial field out of the insert, and it will
> > automatically be set to the next sequence from the table.
> >
> > --
> > Shachar Shemesh
> > Open Source integration & consulting
> > Home page & resume - http://www.shemesh.biz/
> >
> >
> >
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org
>



---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

pgsql-odbc by date:

Previous
From: "Ropel"
Date:
Subject: Re: get last oid
Next
From: "Ropel"
Date:
Subject: Re: get last oid