Thread: can you select on an OID?

can you select on an OID?

From
"Jay G. Scott"
Date:
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


Re: can you select on an OID?

From
Joe Conway
Date:
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


Re: can you select on an OID?

From
Dani Oderbolz
Date:
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