Los OID básicamente le brindan una identificación integrada para cada fila, contenida en una columna del sistema (a diferencia de una columna de espacio de usuario). Eso es útil para las tablas en las que no tiene una clave principal, filas duplicadas, etc. Por ejemplo, si tiene una tabla con dos filas idénticas y desea eliminar la más antigua de las dos, puede hacerlo usando el columna oid.
Los OID se implementan mediante enteros sin signo de 4 bytes. Ellos no único:el contador OID se ajustará a 2³²-1. Los OID también se utilizan para identificar tipos de datos (consulte /usr/include/postgresql/server/catalog/pg_type_d.h
).
En mi experiencia, la característica generalmente no se usa en la mayoría de las aplicaciones respaldadas por Postgres (probablemente en parte porque no son estándar), y su uso está esencialmente en desuso:
En PostgreSQL 8.1, default_with_oids está desactivado de forma predeterminada; en versiones anteriores de PostgreSQL, estaba activado de forma predeterminada.
El uso de OID en las tablas de usuario se considera obsoleto, por lo que la mayoría de las instalaciones deben dejar esta variable deshabilitada. Las aplicaciones que requieren OID para una tabla en particular deben especificar CON OID al crear la tabla. Esta variable se puede habilitar por compatibilidad con aplicaciones antiguas que no siguen este comportamiento.