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 |
|---|---|---|
|
|
Il nome del progetto che contiene il set di dati. |
|
|
Il nome del set di dati che contiene la tabella. Denominato anche
denominato come datasetId. |
|
|
Il nome della tabella. Denominato anche il
tableId. |
|
|
Il nome della colonna. |
|
|
Il nome del progetto del vincolo. |
|
|
Il nome del set di dati del vincolo. |
|
|
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 |
-
(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 | +-----------------------------+