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: