OID:er ger dig i princip ett inbyggt ID för varje rad, som finns i en systemkolumn (till skillnad från en användarutrymmeskolumn). Det är praktiskt för tabeller där du inte har en primärnyckel, har dubbletter av rader, etc. Om du till exempel har en tabell med två identiska rader och du vill ta bort den äldsta av de två, kan du göra det med hjälp av oid kolumn.
OID:er implementeras med 4-byte osignerade heltal. De är inte unik – OID-räknare kommer att lindas runt på 2³²-1. OID används också för att identifiera datatyper (se /usr/include/postgresql/server/catalog/pg_type_d.h
).
Enligt min erfarenhet är funktionen i allmänhet oanvänd i de flesta postgres-stödda applikationer (förmodligen delvis för att de inte är standard), och deras användning är i huvudsak utfasad:
I PostgreSQL 8.1 är default_with_oids avstängd som standard; i tidigare versioner av PostgreSQL var den på som standard.
Användningen av OID i användartabeller anses vara utfasad, så de flesta installationer bör lämna denna variabel inaktiverad. Applikationer som kräver OID för en viss tabell bör specificera WITH OIDS när tabellen skapas. Denna variabel kan aktiveras för kompatibilitet med gamla applikationer som inte följer detta beteende.