Os OIDs basicamente fornecem um id embutido para cada linha, contido em uma coluna do sistema (em oposição a uma coluna de espaço do usuário). Isso é útil para tabelas onde você não tem uma chave primária, tem linhas duplicadas, etc. Por exemplo, se você tem uma tabela com duas linhas idênticas e deseja excluir a mais antiga das duas, você pode fazer isso usando o coluna oid.
Os OIDs são implementados usando inteiros não assinados de 4 bytes. Eles não O contador de OID exclusivo será enrolado em 2³²-1. OID também são usados para identificar tipos de dados (veja
/usr/include/postgresql/server/catalog/pg_type_d.h
). Na minha experiência, o recurso geralmente não é usado na maioria dos aplicativos com suporte de postgres (provavelmente em parte porque eles não são padrão) e seu uso é essencialmente obsoleto:
No PostgreSQL 8.1 default_with_oids é desativado por padrão; nas versões anteriores do PostgreSQL, estava ativado por padrão.
O uso de OIDs em tabelas de usuários é considerado obsoleto, portanto a maioria das instalações deve deixar esta variável desabilitada. Os aplicativos que exigem OIDs para uma tabela específica devem especificar WITH OIDS ao criar a tabela. Esta variável pode ser habilitada para compatibilidade com aplicações antigas que não seguem este comportamento.