OID zasadniczo dają wbudowany identyfikator dla każdego wiersza zawartego w kolumnie systemowej (w przeciwieństwie do kolumny przestrzeni użytkownika). Jest to przydatne w przypadku tabel, w których nie masz klucza podstawowego, masz zduplikowane wiersze itp. Na przykład, jeśli masz tabelę z dwoma identycznymi wierszami i chcesz usunąć najstarszy z nich, możesz to zrobić za pomocą kolumna oid.
Identyfikatory OID są implementowane przy użyciu 4-bajtowych liczb całkowitych bez znaku. Oni nie unikalny – licznik OID zawinie się na 2³²-1. OID są również używane do identyfikacji typów danych (zobacz /usr/include/postgresql/server/catalog/pg_type_d.h
).
Z mojego doświadczenia wynika, że ta funkcja jest ogólnie nieużywana w większości aplikacji wspieranych przez postgres (prawdopodobnie częściowo dlatego, że są one niestandardowe), a ich użycie jest zasadniczo przestarzałe:
W PostgreSQL 8.1 default_with_oids jest domyślnie wyłączone; we wcześniejszych wersjach PostgreSQL był domyślnie włączony.
Używanie identyfikatorów OID w tabelach użytkowników jest uważane za przestarzałe, więc większość instalacji powinna pozostawić tę zmienną wyłączoną. Aplikacje, które wymagają identyfikatorów OID dla określonej tabeli, powinny podczas tworzenia tabeli określić opcję WITH OIDS. Tę zmienną można włączyć w celu zapewnienia zgodności ze starymi aplikacjami, które nie stosują tego zachowania.