Visualizzazione KEY_COLUMN_USAGE
La visualizzazione KEY_COLUMN_USAGE
contiene le colonne delle tabelle di TABLE_CONSTRAINTS
che sono vincolate come chiavi dai vincoli PRIMARY KEY
e FOREIGN KEY
.
Schema
La vista INFORMATION_SCHEMA.KEY_COLUMN_USAGE
ha lo schema seguente:
Nome colonna | Tipo di dati | Valore |
---|---|---|
|
|
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 con vincoli. |
|
|
Il nome della tabella vincolata. |
|
|
Il nome della colonna vincolata. |
|
|
La posizione ordinale della colonna all'interno della chiave del vincolo (a partire da 1). |
|
|
Per le chiavi esterne, la posizione ordinale della colonna all'interno del vincolo della chiave primaria (a partire da 1). Questo valore è NULL
per i vincoli della chiave primaria. |
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_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; |
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.
Per le query con un qualificatore del set di dati, devi disporre delle autorizzazioni per il set di dati. Per le query con un qualificatore regione, devi disporre delle autorizzazioni per il progetto.
Esempi
Esempio 1:
La seguente query mostra i vincoli per una singola tabella in un set di dati:
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_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 seguente query mostra l'utilizzo delle colonne chiave per tutte le tabelle di un singolo set di dati.
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
Se una tabella o un set di dati non ha vincoli, i risultati della query sono i seguenti:
+-----------------------------+ | There is no data to display | +-----------------------------+
Esempio 2:
Le seguenti istruzioni DDL creano una tabella di chiave primaria e una tabella di chiave esterna.
CREATE TABLE composite_pk (x int64, y string, primary key (x, y) NOT ENFORCED);
CREATE TABLE table composite_fk (x int64, y string, z string, primary key (x, y) NOT ENFORCED, CONSTRAINT composite_fk foreign key (z, x) REFERENCES composite_pk (y, x) NOT ENFORCED);
Se esegui una query con l'istruzione nell'esempio 1, i risultati della query
sono simili ai seguenti. Tieni presente che CONSTRAINT_CATALOG
,
CONSTRAINT_SCHEMA
e le colonne duplicate non sono inclusi nei risultati dell'esempio.
+---------------------------+--------------+-------------+------------------+-------------------------------+ | CONSTRAINT_NAME | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT | +---------------------------+--------------+-------------+------------------+-------------------------------+ | composite_pk.pk$ | composite_pk | x | 1 | NULL | | composite_pk.pk$ | composite_pk | y | 2 | NULL | | composite_fk.pk$ | composite_fk | x | 1 | NULL | | composite_fk.pk$ | composite_fk | y | 2 | NULL | | composite_fk.composite_fk | composite_fk | z | 1 | 2 | | composite_fk.composite_fk | composite_fk | x | 2 | 1 | +---------------------------+--------------+-------------+------------------+-------------------------------+