Visualizzazione CONSTRAINT_COLUMN_USAGE

La visualizzazione CONSTRAINT_COLUMN_USAGE contiene tutte le colonne utilizzate dai vincoli. Per i vincoli PRIMARY KEY, si tratta delle colonne della visualizzazione KEY_COLUMN_USAGE. Per i vincoli FOREIGN KEY, si tratta delle colonne delle tabelle a cui viene fatto riferimento.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire query sulla visualizzazione INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE, chiedi all'amministratore di concederti il ruolo IAM di Editor dati BigQuery (roles/bigquery.dataEditor) nel tuo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per eseguire query sulla visualizzazione INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE, sono necessarie le seguenti autorizzazioni:

  • Visualizzazione delle definizioni di chiavi primarie ed esterne: bigquery.tables.get
  • Visualizzazione degli schemi di informazioni delle tabelle: bigquery.tables.list

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

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

Schema

La visualizzazione INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ha il seguente schema:

Nome colonna Tipo di dati Valore

table_catalog

STRING

Il nome del progetto che contiene il set di dati.

table_schema

STRING

Il nome del set di dati che contiene la tabella. Denominato anche denominato come datasetId.

table_name

STRING

Il nome della tabella. Denominato anche il tableId.

column_name

STRING

Il nome della colonna.

constraint_catalog

STRING

Il nome del progetto del vincolo.

constraint_schema

STRING

Il nome del set di dati del vincolo.

constraint_name

STRING

Il nome del vincolo. Può essere il nome della chiave primaria se la colonna viene utilizzata dalla chiave primaria o il nome della chiave esterna se la colonna viene utilizzata da una chiave esterna.

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 visualizzazione 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ù, vedi Sintassi. La tabella seguente mostra gli ambiti di regione e risorsa per questa visualizzazione:

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

Esempi

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

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

Sostituisci quanto segue:

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

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

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;

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

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

Se la tabella o il set di dati non hanno vincoli, i risultati della query sono simili ai seguenti:

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