Обсуждение: can you select on an OID?
Here's what I'm really trying to do: I want to insert a row; one of the items in the row is of type SERIAL. After I insert the row, I want to know what value was assigned to the SERIAL item, call it the f_id. I'm doing this from a C program. I can get the oidvalue, and it should be unique long enough for me to get the f_id. once I have the f_id, i'm okay. I won't try to use the oid again. Is there some way to get the just computed value for the SERIAL? Do I need to select the f_id from files where oid=? I can't figure out the select syntax if i do. SELECT f_id FROM files WHERE ?? oid=8675309?? I'm in trouble after the WHERE. j. -- Jay Scott 512-835-3553 gl@arlut.utexas.edu Head of Sun Support, Sr. Operating Systems Specialist Applied Research Labs, Computer Science Div. S224 University of Texas at Austin
Jay G. Scott wrote: > I want to insert a row; one of the items in the row is of > type SERIAL. After I insert the row, I want to know what > value was assigned to the SERIAL item, call it the f_id. See currval() here: http://www.us.postgresql.org/users-lounge/docs/7.3/postgres/functions-sequence.html Joe
Hi Jay, >I want to insert a row; one of the items in the row is of >type SERIAL. After I insert the row, I want to know what >value was assigned to the SERIAL item, call it the f_id. > Whenever you create a SERIAL column, Postgresql creates an imlicit Sequence in the background (as SERIAL isn´t a real Datatype). I am not entirely sure about the naming convention of this implicit sequequence, I think it is like this: TABBLENAME_COLUMNNAME_seq So, you can get what you need using the currval function. So if your table looks like this: CREATE TABLE test ( first SERIAL ); then you can get the value like this: SELECT currval('test_first_seq'); Regards, Dani