41.7. pg_attribute

Le catalogue pg_attribute stocke les informations sur les colonnes des tables. Il y a exactement une ligne de pg_attribute pour chaque colonne de chaque 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 est équivalent à colonne et est utilisé pour des raisons historiques.

Tableau 41-7. Colonnes de pg_attribute

NomTypeRéférencesDescription
attrelidoidpg_class.oidLa table de cette colonne
attnamename Le nom de la colonne
atttypidoidpg_type.oidLe type de données de cette colonne
attstattargetint4  attstattarget contrôle le niveau de détail des statistiques accumulées pour cette colonne par ANALYZE. Une valeur de zéro 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 exacte d'une valeur positive dépend du type de données. Pour les données scalaires, attstattarget est à la fois le nombre visé de << valeurs les plus courantes >> et le nombre visé d'histogrammes à créer.
attlenint2  Une copie de pg_type.typlen pour le type de cette colonne.
attnumint2  Le numéro de la colonne. Les colonnes ordinaires sont numérotées en commençant par 1. Les colonnes système, comme les oid, ont des numéros négatifs arbitraires.
attndimsint4  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 zéro indique que << c'est un tableau >>.)
attcacheoffint4  Toujours -1 sur disque, mais peut être mis à jour, en mémoire, pour mettre en cache l'emplacement de l'attribut dans la ligne.
atttypmodint4  atttypmod 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 à des fonctions spécifiques au type d'entrée de données et de vérification de taille. La valeur est généralement de -1 pour les types de données qui n'ont pas besoin de atttypmod.
attbyvalbool  Une copie de pg_type.typbyval pour ce type de données.
attstoragechar  Contient normalement une copie de pg_type.typstorage pour ce type de données. Pour les types de données TOASTables, cette valeur peut être modifiée après la création de la colonne pour contrôler la règle de stockage.
attalignchar  Contient une copie de pg_type.typalign pour le type de cette colonne.
attnotnullbool  Indique une contrainte de colonne non NULL. Il est possible de changer cette colonne pour activer ou désactiver cette contrainte.
atthasdefbool  Indique que cette colonne a une valeur par défaut. Dans ce cas, il y aura une entrée correspondante dans le catalogue pg_attrdef pour définir cette valeur.
attisdroppedbool  Indique que cette 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.
attislocalbool  Cette colonne est définie localement dans la relation. Notez qu'une colonne peut être définie localement et héritée simultanément.
attinhcountint4  Nombre d'ancêtres directs de cette colonne. Une colonne qui a un nombre d'ancêtres différent de zéro ne peut être supprimée ni renommée.

Dans l'entrée pg_attribute d'une colonne supprimée, atttypid est réinitialisée à zéro 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.