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 |
---|---|---|
|
|
Nom de projet de la contrainte. |
|
|
Nom de l'ensemble de données de la contrainte. |
|
|
Nom de la contrainte. |
|
|
Nom du projet de la table avec des contraintes. |
|
|
Nom de l'ensemble de données de la table avec des contraintes. |
|
|
Nom de la table avec des contraintes. |
|
|
Nom de la colonne avec des contraintes. |
|
|
Position ordinale de la colonne dans la contrainte de clé (à partir de 1). |
|
|
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 |
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 | +---------------------------+--------------+-------------+------------------+-------------------------------+