Visualizzazione TABLE_CONSTRAINTS
La vista TABLE_CONSTRAINTS
contiene le relazioni chiave principale e chiave esterna
in un set di dati BigQuery.
Autorizzazioni obbligatorie
Devi disporre delle seguenti autorizzazioni IAM (Gestione di identità e accessi):
bigquery.tables.get
per visualizzare le definizioni delle chiavi primarie e esterne.bigquery.tables.list
per visualizzare gli schemi di informazioni delle tabelle.
Ciascuno dei seguenti ruoli predefiniti ha le autorizzazioni necessarie per eseguire i workflow descritti in questo documento:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
Per ulteriori informazioni 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 |
---|---|---|
|
|
Il nome del progetto del vincolo. |
|
|
Il nome del set di dati dei vincoli. |
|
|
Il nome del vincolo. |
|
|
Il nome del progetto della tabella vincolata. |
|
|
Il nome del set di dati della tabella vincolata. |
|
|
Il nome della tabella vincolata. |
|
|
PRIMARY KEY o
FOREIGN KEY . |
|
|
YES o NO a seconda che un vincolo sia posticipabile. È supportato solo NO . |
|
|
È supportato solo NO . |
|
|
YES o NO a seconda che il vincolo sia applicato. È supportato solo NO . |
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 ulteriori informazioni, consulta la sezione Sintassi. La tabella seguente mostra gli ambiti della regione e delle risorse per questa visualizzazione:
Nome vista | Ambito risorsa | Ambito regione |
---|---|---|
[PROJECT_ID.]DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS; |
A livello di set di dati | Posizione del set di dati |
(Facoltativo) PROJECT_ID
: l'ID del tuo progetto Google Cloud. 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 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 i seguenti:
+-----------------------------+ | There is no data to display | +-----------------------------+