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> } ]
Copy

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 sans table_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

created_on

Date et heure de création de la table.

database_name

Base de données dans laquelle la table est stockée.

schema_name

Schéma dans lequel la table est stockée.

table_name

Nom de la table.

column_name

Nom de la colonne dans la clé primaire.

key_sequence

Si la clé primaire est composée de plusieurs colonnes, le numéro de la colonne key_sequence indique l’ordre de ces colonnes dans la clé primaire. Par exemple, si la clé primaire est définie comme CONSTRAINT pkey1 PRIMARY KEY (column_x, column_y), le numéro key_sequence de column_x est 1 et le numéro de key_sequence de column_y est 2.

comment

Le commentaire (le cas échéant) spécifié pour la contrainte lors de sa création.

constraint_name

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;
Copy