PostgreSQLLa base de données la plus sophistiquée au monde.

Version anglaise

49.7. pg_attribute

Le catalogue pg_attribute stocke les informations concernant les colonnes des tables. Il y a exactement une ligne de pg_attribute par colonne de table de la base de données. (Il y a aussi des attributs pour les index et, en fait, tous les objets qui possèdent des entrées dans pg_class.)

Le terme attribut, équivalent à colonne, est utilisé pour des raisons historiques.

Tableau 49.7. Colonnes de pg_attribute

Nom Type Références Description
attrelid oid pg_class.oid La table à laquelle appartient la colonne
attname name   Le nom de la colonne
atttypid oid pg_type.oid Le type de données de la colonne
attstattarget int4   Contrôle le niveau de détail des statistiques accumulées pour la colonne par ANALYZE(7). Une valeur 0 indique qu'aucune statistique ne doit être collectée. Une valeur négative indique d'utiliser l'objectif de statistiques par défaut. Le sens exact d'une valeur positive dépend du type de données. Pour les données scalaires, attstattarget est à la fois le nombre de « valeurs les plus courantes » à collecter et le nombre d'histogrammes à créer.
attlen int2   Une copie de pg_type.typlen pour le type de la colonne.
attnum int2   Le numéro de la colonne. La numérotation des colonnes ordinaires démarre à 1. Les colonnes système, comme les oid, ont des numéros négatifs arbitraires.
attndims int4   Nombre de dimensions, si la colonne est de type tableau, sinon 0. (Pour l'instant, le nombre de dimensions des tableaux n'est pas contrôlé, donc une valeur autre que 0 indique que « c'est un tableau ».)
attcacheoff int4   Toujours -1 sur disque, mais peut être mis à jour lorsque la ligne est chargée en mémoire, pour mettre en cache l'emplacement de l'attribut dans la ligne.
atttypmod int4   Stocke des données spécifiques au type de données précisé lors de la création de la table (par exemple, la taille maximale d'une colonne de type varchar). Il est transmis aux fonctions spécifiques au type d'entrée de données et de vérification de taille. La valeur est généralement -1 pour les types de données qui n'ont pas besoin de atttypmod.
attbyval bool   Une copie de pg_type.typbyval du type de la colonne.
attstorage char   Contient normalement une copie de pg_type.typstorage du type de la colonne. Pour les types de données TOASTables, cette valeur peut être modifiée après la création de la colonne pour en contrôler les règles de stockage.
attalign char   Une copie de pg_type.typalign du type de la colonne.
attnotnull bool   Indique une contrainte de non-nullité de colonne. Il est possible de changer cette colonne pour activer ou désactiver cette contrainte.
atthasdef bool   Indique que la colonne a une valeur par défaut. Dans ce cas, il y a une entrée correspondante dans le catalogue pg_attrdef pour définir cette valeur.
attisdropped bool   Indique que la colonne a été supprimée et n'est plus valide. Une colonne supprimée est toujours présente physiquement dans la table, mais elle est ignorée par l'analyseur de requête et ne peut être accédée en SQL.
attislocal bool   La colonne est définie localement dans la relation. Une colonne peut être simultanément définie localement et héritée.
attinhcount int4   Nombre d'ancêtres directs de la colonne. Une colonne qui a au moins un ancêtre ne peut être ni supprimée ni renommée.
attcollation oid pg_collation.oid Le collationnement défini de la colonne, ou zéro si la colonne n'est pas un type de données collationnable.
attacl aclitem[]   Droits d'accès niveau colonne, s'il y en a qui ont été spécifiquement accordés à cette colonne
attoptions text[]   Options au niveau colonne, en tant que chaînes du type « motclé=valeur »
attfdwoptions text[]   Options du wrapper de données distances, au niveau colonne, en tant que chaînes du type « keyword=value »

Dans l'entrée pg_attribute d'une colonne supprimée, atttypid est réinitialisée à 0 mais attlen et les autres champs copiés à partir de pg_type sont toujours valides. Cet arrangement est nécessaire pour s'adapter à la situation où le type de données de la colonne supprimée a été ensuite supprimé et qu'il n'existe donc plus de ligne pg_type. attlen et les autres champs peuvent être utilisés pour interpréter le contenu d'une ligne de la table.