Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
PG_TABLE_DEF
Stocke les informations sur les colonnes de la table.
PG_TABLE_DEF renvoie uniquement les informations sur les tables visibles de l'utilisateur. Si PG_TABLE_DEF ne renvoie pas les résultats attendus, vérifiez que le paramètre search_path est correctement défini pour inclure les schémas correspondants.
Vous pouvez utiliser SVV_TABLE_INFO pour afficher des informations plus exhaustives sur une table, notamment l'asymétrie de la distribution des données, l'asymétrie de la distribution de clés, la taille de la table et les statistiques.
Colonnes de la table
Nom de la colonne | Type de données | Description |
---|---|---|
schemaname | name | Nom du schéma. |
tablename | name | Nom de la table. |
column | name | Nom de la colonne. |
type | text | Type de données de la colonne. |
encoding | character(32) | Encodage de la colonne. |
distkey | boolean | True si cette colonne est la clé de distribution de la table. |
sortkey | entier | Ordre de la colonne dans la clé de tri. Si la table utilise une clé de tri composée et que toutes les colonnes qui font partie de la clé de tri ont une valeur positive qui indique la position de la colonne dans la clé de tri. Si la table utilise une clé de tri entrelacée, toutes les colonnes qui font partie de la clé de tri ont une valeur qui est tour à tour positive ou négative, où la valeur absolue indique la position de la colonne dans la clé de tri. Si 0, la colonne de fait pas partie d'une clé de tri. |
notnull | boolean | True si la colonne comporte une contrainte NOT NULL. |
Exemple
L'exemple suivant illustre les colonnes de clés de tri composées de la table LINEORDER_COMPOUND.
select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_compound' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | 1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | 3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | 5 | true (5 rows)
L'exemple suivant illustre les colonnes de clés de tri entrelacées de la table LINEORDER_INTERLEAVED.
select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_interleaved' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | -1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | -3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | -5 | true (5 rows)
PG_TABLE_DEF renvoie uniquement les informations pour les tables dans des schémas inclus dans le chemin de recherche. Pour de plus amples informations, veuillez consulter search_path.
Par exemple, supposons que vous créiez un schéma et une table, puis que vous interrogiez PG_TABLE_DEF.
create schema demo; create table demo.demotable (one int); select * from pg_table_def where tablename = 'demotable'; schemaname|tablename|column| type | encoding | distkey | sortkey | notnull ----------+---------+------+------+----------+---------+---------+--------
La requête ne renvoie aucune ligne pour la nouvelle table. Examinez le paramètre de search_path
.
show search_path; search_path --------------- $user, public (1 row)
Ajoutez le schéma demo
au chemin de recherche et exécutez la requête à nouveau.
set search_path to '$user', 'public', 'demo'; select * from pg_table_def where tablename = 'demotable'; schemaname| tablename |column| type | encoding |distkey|sortkey| notnull ----------+-----------+------+---------+----------+-------+-------+-------- demo | demotable | one | integer | none | f | 0 | f (1 row)