RE: [SQL] Re: [INTERFACES] JDBC and getting just assigned serial number - Mailing list pgsql-sql
From | Hutton, Rob |
---|---|
Subject | RE: [SQL] Re: [INTERFACES] JDBC and getting just assigned serial number |
Date | |
Msg-id | 11EFC736FB68D111B9DD00805FAD7C6D2DACBC@plymartpdc.internal.plymart.com Whole thread Raw |
Responses |
RE: [SQL] Re: [INTERFACES] JDBC and getting just assigned serial
number
|
List | pgsql-sql |
Except in an active database, or possibly not so active, where another record is inserted between the time yours is committed and you do the currval. It is much safer to do a select on nextval to get the value, the put it in as part of your update. It eliminates the chance that you will get the wrong record, and there is minimal overhead. -----Original Message----- From: Herouth Maoz [mailto:herouth@oumail.openu.ac.il] Sent: Wednesday, September 22, 1999 11:17 AM To: steinbeck@ice.mpg.de; pgsql-interfaces@postgreSQL.org Cc: pgsql-sql@postgreSQL.org Subject: [SQL] Re: [INTERFACES] JDBC and getting just assigned serial number At 21:19 +0200 on 13/09/1999, Christoph Steinbeck wrote: > I'm thrilled to see that there is some kind of discussion running in the > C area on the exact equivalent of my very recent JDBC problem. > I insert a row into a table where one field is a SERIAL. This SERIAL, of > course, is automatically assigned by PostgreSQL. How do I get this > number immeadiately after inserting the row? When I issue the command > with psql I get back some kind of number which presumably is the OID. > Getting just this one would be fine too because I need it for > referencing. I have answered this question several times already on the SQL list. It has nothing to do with Java or any other interface you are using (except, maybe, the question about how to get the OID). Let's make it short. 1) Don't use OIDs for reference. It will only make life harder. 2) If you want to use the OID just to retrieve that last row, make sure that the OID column is indexed, otherwise you arein for sequential searching. See, I told you not to use it... 3) As for the serial field. "serial" is a shorthand notation for creating an PostgreSQL sequence, and taking the next numberfrom that sequence. You can see the name of the sequence that was created with a quick \ds in psql. Now, after inserting a row, use SELECT currval('sequence_name'); The number returned is the number assigned to the serialnumber in the last INSERT statement of the current session. Herouth -- Herouth Maoz, Internet developer. Open University of Israel - Telem project http://telem.openu.ac.il/~herutma ************ _____________________________________________________________ Email addresses, faxes, and any other means of electronic contact are for the business use of Ply Marts, Inc., its employees, suppliers, and any other party interested in the business of Ply Marts, Inc. Individuals using computer systems owned or operated by Ply Marts, Inc. do so subject to applicable laws and company policies. Ply Marts, Inc. disclaims all responsibility and/or warranties for information and materials residing on non-company systems or available over publicly accessible networks. Such materials do not necessarily reflect the attitudes, opinions, or values of Ply Marts, Inc. or its employees. Abuse of these systems may be punishable under local or federal laws. To report suspected abuse, please send email to: mailto:abuse@plymart.com _____________________________________________________________ We are on the web at http://www.plymart.com _____________________________________________________________