OIDは基本的に、(ユーザースペース列ではなく)システム列に含まれるすべての行の組み込みIDを提供します。これは、主キーがない、行が重複しているなどのテーブルに便利です。たとえば、2つの同じ行を持つテーブルがあり、2つのうち最も古いものを削除する場合は、 oid列。
OIDは、4バイトの符号なし整数を使用して実装されます。彼らはそうではありません 一意–OIDカウンターは2³²-1でラップアラウンドします。 OIDは、データ型の識別にも使用されます(/usr/include/postgresql/server/catalog/pg_type_d.h
を参照) 。
私の経験では、この機能はほとんどのpostgres-backedアプリケーションでは一般的に使用されておらず(おそらく一部は非標準であるため)、それらの使用は基本的に非推奨です:
PostgreSQL 8.1では、default_with_oidsはデフォルトでオフになっています。以前のバージョンのPostgreSQLでは、デフォルトでオンでした。
ユーザーテーブルでのOIDの使用は非推奨と見なされるため、ほとんどのインストールではこの変数を無効のままにしておく必要があります。特定のテーブルのOIDを必要とするアプリケーションは、テーブルの作成時にWITHOIDSを指定する必要があります。この変数は、この動作に従わない古いアプリケーションとの互換性のために有効にすることができます。