Vue TABLE_CONSTRAINTS

La vue TABLE_CONSTRAINTS contient les relations de clé primaire et étrangère dans un ensemble de données BigQuery.

Autorisations requises

Vous avez besoin des autorisations IAM (Identity and Access Management) suivantes :

  • bigquery.tables.get pour afficher les définitions de clé primaire et étrangère.
  • bigquery.tables.list pour afficher les schémas d'informations des tables.

Chacun des rôles prédéfinis suivants dispose des autorisations nécessaires pour effectuer les workflows détaillés dans ce document :

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

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.TABLE_CONSTRAINTS présente le schéma suivant :

Nom de la colonne Type Signification

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.

CONSTRAINT_TYPE

STRING

PRIMARY KEY ou FOREIGN KEY.

IS_DEFERRABLE

STRING

YES ou NO selon qu'une contrainte est différable ou non. Seule l'option NO est acceptée.

INITIALLY_DEFERRED

STRING

Seule l'option NO est acceptée.

ENFORCED

STRING

YES ou NO selon que la contrainte est appliquée ou non.
Seule la fonctionnalité NO est prise en charge.

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.TABLE_CONSTRAINTS; 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é.

    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.TABLE_CONSTRAINTS
    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.TABLE_CONSTRAINTS;

    Avec des contraintes existantes, les résultats de la requête ressemblent à ce qui suit :

    +-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+
    | Row | constraint_catalog  | constraint_schema |    constraint_name    |    table_catalog    | table_schema | table_name | constraint_type | is_deferrable | initially_deferred | enforced |
    +-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+
    |   1 | myConstraintCatalog | myDataset         | orders.pk$            | myConstraintCatalog | myDataset    | orders     | PRIMARY KEY     | NO            | NO                 | NO       |
    |   2 | myConstraintCatalog | myDataset         | orders.order_customer | myConstraintCatalog | myDataset    | orders     | FOREIGN KEY     | NO            | NO                 | NO       |
    +-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+
    

    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 |
    +-----------------------------+