Re: get last oid - Mailing list pgsql-odbc

From Ropel
Subject Re: get last oid
Date
Msg-id 02c801c3c63d$bfebc430$0100a8c0@ropelxp
Whole thread Raw
In response to Re: get last oid  ("Leeuw van der, Tim" <tim.leeuwvander@nl.unisys.com>)
List pgsql-odbc
Yor're right, I forgot that "currval" is not influenced by other sessions...

Regards

Roberto

----- Original Message -----
From: "Miguel Juan" <mjuan@cibal.es>
To: "Ropel" <ropel@ropel.it>; "postgre" <pgsql-odbc@postgresql.org>
Sent: Friday, December 19, 2003 3:15 PM
Subject: Re: [ODBC] get last oid


> Hello,
>
> if you make an Insert on a table with a serial,  you can get the last
value
> of the serial inserted by your session using:
> SELECT currval('Sequence_name');
>
> This is better and faster than any other solution. This ensures you to get
> the last sequence number asigned to your session. Doesn't matter the
number
> of concurrent INSERTS made by other clients.
>
> Regards
>
> Miguel Juan
>
>
>
> ----- Original Message -----
> From: Ropel
> To: postgre
> Sent: Friday, December 19, 2003 2:57 PM
> 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: "Leeuw van der, Tim"
Date:
Subject: Re: get last oid
Next
From: "Hiroshi Inoue"
Date:
Subject: Re: Conversion problem with unsigned long in psqlodbc-7.3.2