Michael Fuhr wrote:
> FAQ 4.15 "What is an OID? What is a TID?" is misleading about the
> uniqueness of OIDs. It does mention the possibility of overflow
> (while mentioning that nobody has ever reported it), but it doesn't
> discourage their use as primary keys like the documentation does
> in, for example, the following sections:
>
> http://www.postgresql.org/docs/8.0/static/datatype-oid.html
> http://www.postgresql.org/docs/8.0/static/ddl-system-columns.html
Wow, that one really needed updating! Here is the new text:
---------------------------------------------------------------------------
4.15) What is an OID? What is a TID?
Every row that is created in PostgreSQL gets a unique OID unless created
WITHOUT OIDS. OIDs are autotomatically assigned unique 4-byte integers
that are unique across the entire installation. However, they overflow
at 4 billion, and then the OIDs start being duplicated. PostgreSQL uses
OIDs to link its internal system tables together.
To uniquely number columns in user tables, it is best to use SERIAL
rather than OIDs because SERIAL sequences are unique only within a
single table. and are therefore less likely to overflow. SERIAL8 is
available for storing eight-byte sequence values.
TIDs are used to identify specific physical rows with block and offset
values. TIDs change after rows are modified or reloaded. They are used
by index entries to point to physical rows.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073