SHOW PRIMARY KEYS¶
Liste les clés primaires pour la table spécifiée, ou pour toutes les tables du schéma actuel ou spécifié, ou pour toutes les tables de la base de données actuelle ou spécifiée, ou pour toutes les tables du compte actuel.
Syntaxe¶
SHOW [ TERSE ] PRIMARY KEYS
[ IN { ACCOUNT | DATABASE [ <database_name> ] | SCHEMA [ <schema_name> ] | TABLE | [ TABLE ] <table_name> } ]
Paramètres¶
TERSE
Cette clause est acceptée syntaxiquement, mais n’a aucun effet sur la sortie.
IN { ACCOUNT | DATABASE [ <database_name> ] | SCHEMA [ <schema_name> ] | TABLE | [ TABLE ] <table_name> }
Spécifie la portée de la commande, qui détermine si la commande liste les enregistrements uniquement pour la base de données, le schéma, la table ou le compte actuels ou spécifiés.
Si vous spécifiez le mot clé
ACCOUNT
, la commande récupère les enregistrements de tous les schémas de toutes les bases de données du compte courant.Si vous spécifiez le mot clé
DATABASE
, alors :Si vous spécifiez un
db_name
, la commande récupère les enregistrements de tous les schémas de la base de données spécifiée.Si vous ne spécifiez pas un
db_name
, alors :S’il existe une base de données actuelle, la commande récupère les enregistrements de tous les schémas de la base de données actuelle.
S’il n’y a pas de base de données actuelle, la commande récupère les enregistrements de toutes les bases de données et de tous les schémas du compte.
Si vous spécifiez le mot clé
SCHEMA
, alors :Si vous spécifiez un nom de schéma qualifié (par exemple
my_database.my_schema
), la commande récupère les enregistrements de la base de données et du schéma spécifiés.Si vous spécifiez un
schema_name
non qualifié, alors :S’il existe une base de données actuelle, la commande récupère les enregistrements du schéma spécifié dans la base de données actuelle.
S’il n’y a pas de base de données actuelle, la commande affiche l’erreur
SQL compilation error: Object does not exist, or operation cannot be performed
.
Si vous ne spécifiez pas un
schema_name
, alors :S’il existe une base de données actuelle, alors :
S’il existe un schéma actuel, la commande récupère les enregistrements pour le schéma actuel dans la base de données actuelle.
S’il n’y a pas de schéma actuel, la commande récupère les enregistrements de tous les schémas de la base de données actuelle.
S’il n’y a pas de base de données actuelle, la commande récupère les enregistrements de toutes les bases de données et de tous les schémas du compte.
Si vous spécifiez le mot clé
TABLE
sanstable_name
, alors :S’il existe une base de données actuelle, alors :
S’il existe un schéma actuel, la commande récupère les enregistrements pour le schéma actuel dans la base de données actuelle.
S’il n’y a pas de schéma actuel, la commande récupère les enregistrements de tous les schémas de la base de données actuelle.
S’il n’y a pas de base de données actuelle, la commande récupère les enregistrements de toutes les bases de données et de tous les schémas du compte.
Si vous spécifiez un
<nom_table>
(avec ou sans le mot cléTABLE
), alors :Si vous spécifiez un
<nom_table>
entièrement qualifié (par exemple,my_database_name.my_schema_name.my_table_name
), la commande récupère tous les enregistrements de la table spécifiée.Si vous spécifiez un
<nom_table>
qualifié de schéma (par exemple,my_schema_name.my_table_name
), alors :Si une base de données actuelle existe, la commande récupère tous les enregistrements de la table spécifiée.
Si aucune base de données actuelle n’existe, la commande affiche une erreur similaire à
Cannot perform SHOW <type_objet>. This session does not have a current database...
.
Si vous spécifiez un
<nom_de_table>
non qualifié, alors :Si une base de données actuelle et un schéma actuel existent, la commande récupère les enregistrements de la table spécifiée dans le schéma actuel de la base de données actuelle.
Si aucune base de données actuelle n’existe ou si aucun schéma actuel n’existe, la commande affiche une erreur similaire à :
SQL compilation error: <objet> does not exist or not authorized.
.
Par défaut : dépend si la session dispose actuellement d’une base de données en cours d’utilisation :
Base de données :
DATABASE
est la valeur par défaut (c’est-à-dire que la commande renvoie les objets que vous pouvez visualiser dans la base de données).Aucune base de données :
ACCOUNT
est la valeur par défaut (c’est-à-dire que la commande renvoie les objets que vous pouvez visualiser dans votre compte).
Notes sur l’utilisation¶
La commande ne nécessite pas l’exécution d’un entrepôt en cours d’exécution.
Pour chaque clé primaire à colonne unique, la sortie contient une ligne.
Pour chaque clé primaire multi-colonnes, la sortie contient une ligne pour chaque colonne dans la clé primaire.
Si un compte (ou une base de données ou un schéma) comporte un grand nombre de tables, la recherche dans l’ensemble du compte (ou de la table ou du schéma) peut consommer une quantité importante de ressources de calcul.
Pour post-traiter la sortie de cette commande, vous pouvez utiliser la fonction RESULT_SCAN qui traite la sortie comme une table qui peut être interrogée.
Important
Rappelez-vous que Snowflake traite les contraintes de clé primaire comme des contraintes NOT NULL. Snowflake n’impose pas de valeurs uniques pour les clés primaires.
Sortie¶
La sortie de commande fournit les propriétés de clé primaire et les métadonnées dans les colonnes suivantes :
Colonne |
Description |
---|---|
|
Date et heure de création de la table. |
|
Base de données dans laquelle la table est stockée. |
|
Schéma dans lequel la table est stockée. |
|
Nom de la table. |
|
Nom de la colonne dans la clé primaire. |
|
Si la clé primaire est composée de plusieurs colonnes, le numéro de la colonne |
|
Le commentaire (le cas échéant) spécifié pour la contrainte lors de sa création. |
|
Nom de la contrainte. |
Exemples¶
show primary keys;
show primary keys in account;
show primary keys in database;
show primary keys in database my_database;
show primary keys in schema;
show primary keys in schema my_schema;
show primary keys in schema my_database.my_schema;
show primary keys in my_table;
show primary keys in my_database.my_schema.my_table;