Visualizzazione TABLE_CONSTRAINTS

La vista TABLE_CONSTRAINTS contiene le relazioni tra chiave primaria e chiave esterna in un set di dati BigQuery.

Autorizzazioni obbligatorie

Devi disporre delle seguenti autorizzazioni IAM (Identity and Access Management):

  • bigquery.tables.get per visualizzare le definizioni delle chiavi primarie ed esterne.
  • bigquery.tables.list per visualizzare gli schemi di informazioni delle tabelle.

Ciascuno dei seguenti ruoli predefiniti dispone delle autorizzazioni necessarie per eseguire i workflow descritti in questo documento:

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

Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.

Schema

La vista INFORMATION_SCHEMA.TABLE_CONSTRAINTS ha lo schema seguente:

Nome colonna Tipo Significato

constraint_catalog

STRING

Il nome del progetto vincolo.

constraint_schema

STRING

Il nome del set di dati del vincolo.

constraint_name

STRING

Il nome del vincolo.

table_catalog

STRING

Il nome del progetto della tabella vincolata.

table_schema

STRING

Il nome del set di dati della tabella vincolata.

table_name

STRING

Il nome della tabella vincolata.

constraint_type

STRING

PRIMARY KEY o FOREIGN KEY.

is_deferrable

STRING

YES o NO a seconda che un vincolo sia differibile. È supportato solo NO.

initially_deferred

STRING

È supportato solo NO.

enforced

STRING

YES o NO a seconda che il vincolo sia applicato.
È supportato solo NO.

Per garantire la stabilità, ti consigliamo di elencare esplicitamente le colonne nelle query dello schema informativo anziché utilizzare un carattere jolly (SELECT *). L'elenco esplicito delle colonne impedisce l'interruzione delle query se lo schema sottostante cambia.

Ambito e sintassi

Le query su questa vista devono includere un qualificatore del set di dati. Per le query con un qualificatore del set di dati, devi disporre delle autorizzazioni per il set di dati. Per saperne di più, consulta la sezione Sintassi. La tabella seguente mostra gli ambiti di regione e risorsa per questa visualizzazione:

Nome vista Ambito risorsa Ambito regione
[PROJECT_ID.]DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS; Livello del set di dati Posizione del set di dati
Sostituisci quanto segue:
  • (Facoltativo) PROJECT_ID: l'ID del tuo Google Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito.

Esempi

La seguente query mostra i vincoli per una singola tabella in un set di dati:

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

Sostituisci quanto segue:

  • PROJECT_ID: (Facoltativo) Il nome del tuo progetto cloud. Se non specificato, questo comando utilizza il progetto predefinito.
  • DATASET: il nome del set di dati.
  • TABLE: il nome della tabella.

Al contrario, la seguente query mostra i vincoli per tutte le tabelle di un singolo set di dati.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Con i vincoli esistenti, i risultati della query sono simili ai seguenti:

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

Se la tabella o il set di dati non ha vincoli, i risultati della query sono simili a questi:

+-----------------------------+
| There is no data to display |
+-----------------------------+