Thread: jdbc how to get SERIAL
How do I get the id column of a row via jdbc if the column is a SERIAL column. I want to get the id of the row after I insert new data via jdbc execute command. Thanks, John Thorhauer -- ******************************** ** John Thorhauer ** jthorhauer@phoenixcolor.com ********************************
Explictly get the value. For example: ResultSet rs = st.executeQuery("select nextval('my_col_name_seq'));st.next(); int id = st.getInt(1);st.executeUpdate("insertinto mytable values(id = "+id+" , myvalu = 'blah');"); John Thorhauer wrote: > > How do I get the id column of a row via jdbc if the column is a SERIAL > column. I want to get the id of the row after I insert new data via > jdbc execute command. > > Thanks, > John Thorhauer > > -- > ******************************** > ** John Thorhauer > ** jthorhauer@phoenixcolor.com > ********************************
Wim Ceulemans wrote: > > Joseph Shraibman wrote: > > > > Explictly get the value. > > > > For example: > > ResultSet rs = st.executeQuery("select nextval('my_col_name_seq')); > > st.next(); int id = st.getInt(1); > > st.executeUpdate("insert into mytable values(id = "+id+" , myvalu = > > 'blah');"); > > > > John Thorhauer wrote: > > > > > > How do I get the id column of a row via jdbc if the column is a SERIAL > > > column. I want to get the id of the row after I insert new data via > > > jdbc execute command. > > > > > > Thanks, > > > John Thorhauer > > > > > Doesn't it have to be currval in stead of nextval? > No, you want to do an insert, to you need to get the nextval.
The function currval does this. Ie: select currval("mycol_id_seq"); where mycol is the table and id is the column for the sequence. Would return that value. PS: The result is for that session, so if another session increments that sequence, you don't see that value but the last value of _your_ session. Peter -- Peter Mount Enterprise Support Maidstone Borough Council Any views stated are my own, and not those of Maidstone Borough Council -----Original Message----- From: John Thorhauer [mailto:jthorhauer@phoenixcolor.com] Sent: Tuesday, July 18, 2000 7:37 PM To: pgsql-interfaces@postgresql.org Subject: [INTERFACES] jdbc how to get SERIAL How do I get the id column of a row via jdbc if the column is a SERIAL column. I want to get the id of the row after I insert new data via jdbc execute command. Thanks, John Thorhauer -- ******************************** ** John Thorhauer ** jthorhauer@phoenixcolor.com ********************************
If you call nextval() then ther sequence will increment. Once the insert has been done, currval() will then return the last value used in that connection. You don't have any race conditions with other connections with currval. Peter -- Peter Mount Enterprise Support Maidstone Borough Council Any views stated are my own, and not those of Maidstone Borough Council -----Original Message----- From: Joseph Shraibman [mailto:jks@selectacast.net] Sent: Tuesday, July 18, 2000 10:16 PM To: Wim Ceulemans Cc: John Thorhauer; pgsql-interfaces@postgresql.org Subject: Re: [INTERFACES] jdbc how to get SERIAL Wim Ceulemans wrote: > > Joseph Shraibman wrote: > > > > Explictly get the value. > > > > For example: > > ResultSet rs = st.executeQuery("select nextval('my_col_name_seq')); > > st.next(); int id = st.getInt(1); > > st.executeUpdate("insert into mytable values(id = "+id+" , myvalu = > > 'blah');"); > > > > John Thorhauer wrote: > > > > > > How do I get the id column of a row via jdbc if the column is a SERIAL > > > column. I want to get the id of the row after I insert new data via > > > jdbc execute command. > > > > > > Thanks, > > > John Thorhauer > > > > > Doesn't it have to be currval in stead of nextval? > No, you want to do an insert, to you need to get the nextval.