Vue KEY_COLUMN_USAGE

La vue KEY_COLUMN_USAGE contient des colonnes des tables de TABLE_CONSTRAINTS qui sont limitées en tant que clés par des contraintes PRIMARY KEY et FOREIGN KEY.

Schéma

La vue INFORMATION_SCHEMA.KEY_COLUMN_USAGE présente le schéma suivant :

Nom de la colonne Type de données Valeur

CONSTRAINT_CATALOG

STRING

Nom de projet de la contrainte.

CONSTRAINT_SCHEMA

STRING

Nom de l'ensemble de données de la contrainte.

CONSTRAINT_NAME

STRING

Nom de la contrainte.

TABLE_CATALOG

STRING

Nom du projet de la table avec des contraintes.

TABLE_SCHEMA

STRING

Nom de l'ensemble de données de la table avec des contraintes.

TABLE_NAME

STRING

Nom de la table avec des contraintes.

COLUMN_NAME

STRING

Nom de la colonne avec des contraintes.

ORDINAL_POSITION

INT64

Position ordinale de la colonne dans la contrainte de clé (à partir de 1).

POSITION_IN_UNIQUE_CONSTRAINT

INT64

Pour les clés étrangères, la position ordinale de la colonne dans la contrainte de clé primaire (à partir de 1). Cette valeur est NULL pour les contraintes de clé primaire.

Champ d'application et syntaxe

Les requêtes exécutées sur cette vue doivent inclure un qualificatif d'ensemble de données. Pour les requêtes avec un qualificatif d'ensemble de données, vous devez disposer d'autorisations pour l'ensemble de données. Pour en savoir plus, consultez la section Syntaxe. Le tableau suivant explique le champ d'application des régions et des ressources pour cette vue :

Nom de la vue Champ d'application de la ressource Champ d'application de la région
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; Niveau de l'ensemble de données Emplacement d'un ensemble de données
Remplacez les éléments suivants :

  • Facultatif : PROJECT_ID : ID de votre projet Google Cloud. Si non spécifié, le projet par défaut est utilisé.

    Pour les requêtes avec un qualificatif d'ensemble de données, vous devez disposer d'autorisations pour l'ensemble de données. Pour les requêtes avec un qualificatif de région, vous devez disposer des autorisations nécessaires sur le projet.

    Exemples

    Exemple 1 :

    La requête suivante montre les contraintes pour une seule table d'un ensemble de données :

    SELECT *
    FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE table_name = TABLE;

    Remplacez les éléments suivants :

    • PROJECT_ID : facultatif. Nom de votre projet Cloud. Si aucune valeur n'est spécifiée, cette commande utilise le projet par défaut.
    • DATASET : nom de votre ensemble de données.
    • TABLE : nom de la table.

    À l'inverse, la requête suivante montre l'utilisation des colonnes clés pour toutes les tables d'un même ensemble de données.

    SELECT *
    FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

    Si une table ou un ensemble de données ne présente aucune contrainte, les résultats de la requête se présentent comme suit :

    +-----------------------------+
    | There is no data to display |
    +-----------------------------+
    
    Exemple 2 :

    Les instructions LDD suivantes créent une table de clé primaire et une table de clé étrangère.

    CREATE TABLE composite_pk (x int64, y string, primary key (x, y) NOT ENFORCED);
    CREATE TABLE table composite_fk (x int64, y string, z string,  primary key (x, y)
    NOT ENFORCED, CONSTRAINT composite_fk foreign key (z, x)
    REFERENCES composite_pk (y, x) NOT ENFORCED);

    Si elle est interrogée avec l'instruction dans l'exemple 1, les résultats de la requête ressemblent à ce qui suit. Notez que CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA et les colonnes en double ne sont pas inclus dans les résultats de l'exemple.

    +---------------------------+--------------+-------------+------------------+-------------------------------+
    |     CONSTRAINT_NAME       |  TABLE_NAME  | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT |
    +---------------------------+--------------+-------------+------------------+-------------------------------+
    | composite_pk.pk$          | composite_pk | x           | 1                | NULL                          |
    | composite_pk.pk$          | composite_pk | y           | 2                | NULL                          |
    | composite_fk.pk$          | composite_fk | x           | 1                | NULL                          |
    | composite_fk.pk$          | composite_fk | y           | 2                | NULL                          |
    | composite_fk.composite_fk | composite_fk | z           | 1                | 2                             |
    | composite_fk.composite_fk | composite_fk | x           | 2                | 1                             |
    +---------------------------+--------------+-------------+------------------+-------------------------------+