Thread: unique ID across all columns

unique ID across all columns

From
Felix Kater
Date:
Hi,

I need a unique ID across all columns I create. Is it o.k. to
achive this by combining pg_attribute.attnum of a column together with
the OID of the table the column is in?

While the table's OID should be unique according to the manual, I have
found no hints about the uniqueness of attnum -- I removed and added
some columns and it seems that already used values are not used again.

Felix

Re: unique ID across all columns

From
Alvaro Herrera
Date:
Felix Kater wrote:
> Hi,
>
> I need a unique ID across all columns I create. Is it o.k. to
> achive this by combining pg_attribute.attnum of a column together with
> the OID of the table the column is in?
>
> While the table's OID should be unique according to the manual, I have
> found no hints about the uniqueness of attnum -- I removed and added
> some columns and it seems that already used values are not used again.

Yes, the table OID is unique, and pg_attribute.attnum is unique as well.
They are not reused, not even when columns are dropped.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

Re: unique ID across all columns

From
Tom Lane
Date:
Alvaro Herrera <alvherre@commandprompt.com> writes:
> Felix Kater wrote:
>> I need a unique ID across all columns I create. Is it o.k. to
>> achive this by combining pg_attribute.attnum of a column together with
>> the OID of the table the column is in?

> Yes, the table OID is unique, and pg_attribute.attnum is unique as well.
> They are not reused, not even when columns are dropped.

The OID could be re-used after the table is dropped, though.  It's not
clear whether Felix needs uniqueness across time or just at any one
instant.

            regards, tom lane