Vue CONSTRAINT_COLUMN_USAGE
La vue CONSTRAINT_COLUMN_USAGE contient toutes les colonnes utilisées par
les contraintes.
Pour les contraintes PRIMARY KEY, il s'agit des colonnes de la vue KEY_COLUMN_USAGE. Pour les contraintes FOREIGN KEY, il s'agit des colonnes des tables référencées.
Rôles requis
Pour obtenir les autorisations nécessaires pour interroger la vue INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE, demandez à votre administrateur de vous accorder le rôle IAM Éditeur de données BigQuery (roles/bigquery.dataEditor) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour interroger la vue INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour interroger la vue INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE :
-
Afficher les définitions de clé primaire et étrangère :
bigquery.tables.get -
Afficher les schémas d'informations sur les tables :
bigquery.tables.list
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.
Schéma
La vue INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE présente le schéma suivant :
| Nom de la colonne | Type de données | Valeur |
|---|---|---|
|
|
Nom du projet qui contient l'ensemble de données. |
|
|
Nom de l'ensemble de données contenant la table. Également
appelé datasetId. |
|
|
Nom de la table. Également appelé le
tableId. |
|
|
Nom de la colonne. |
|
|
Nom de projet de la contrainte. |
|
|
Nom de l'ensemble de données de la contrainte. |
|
|
Nom de la contrainte. Il peut s'agir du nom de la clé primaire si la colonne est utilisée par la clé primaire, ou du nom de la clé étrangère si la colonne est utilisée par une clé étrangère. |
Pour plus de stabilité, nous vous recommandons de lister explicitement les colonnes dans vos requêtes de schéma d'informations au lieu d'utiliser un caractère générique (SELECT *). Cela évite que les requêtes ne soient interrompues si le schéma sous-jacent change.
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.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE; |
Niveau de l'ensemble de données | Emplacement de l'ensemble de données |
-
(facultatif)
PROJECT_ID: ID de votre Google Cloud projet. Si non spécifié, le projet par défaut est utilisé.
Exemples
La requête suivante montre les contraintes pour une seule table d'un ensemble de données :
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.CONSTRAINT_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 affiche les contraintes pour toutes les tables d'un même ensemble de données.
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;
Avec des contraintes existantes, les résultats de la requête ressemblent à ce qui suit :
+-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+ | row | table_catalog | table_schema | table_name | column_name | constraint_catalog | constraint_schema | constraint_name | +-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+ | 1 | myConstraintCatalog | myDataset | orders | o_okey | myConstraintCatalog | myDataset | orders.pk$ | | 2 | myConstraintCatalog | myDataset | orders | o_okey | myConstraintCatalog | myDataset | lineitem.lineitem_order | +-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+
Si la table ou l'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 | +-----------------------------+