PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

SQL, Postgres OIDs, que sont-ils et pourquoi sont-ils utiles ?

Les OID vous donnent essentiellement un identifiant intégré pour chaque ligne, contenu dans une colonne système (par opposition à une colonne d'espace utilisateur). C'est pratique pour les tables où vous n'avez pas de clé primaire, avez des lignes en double, etc. Par exemple, si vous avez une table avec deux lignes identiques et que vous souhaitez supprimer la plus ancienne des deux, vous pouvez le faire en utilisant le colonne oid.

Les OID sont implémentés à l'aide d'entiers non signés de 4 octets. Ils ne sont pas le compteur unique–OID s'enroulera autour de 2³²-1. Les OID sont également utilisés pour identifier les types de données (voir /usr/include/postgresql/server/catalog/pg_type_d.h ).

D'après mon expérience, la fonctionnalité est généralement inutilisée dans la plupart des applications basées sur postgres (probablement en partie parce qu'elles ne sont pas standard), et leur utilisation est essentiellement obsolète :

Dans PostgreSQL 8.1 default_with_oids est désactivé par défaut; dans les versions précédentes de PostgreSQL, il était activé par défaut.

L'utilisation d'OID dans les tables utilisateur est considérée comme obsolète, la plupart des installations doivent donc laisser cette variable désactivée. Les applications qui nécessitent des OID pour une table particulière doivent spécifier WITH OIDS lors de la création de la table. Cette variable peut être activée pour la compatibilité avec les anciennes applications qui ne suivent pas ce comportement.