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: