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 il seguente schema:
Nome colonna | Tipo di dati | Valore |
---|---|---|
|
|
Il nome del progetto del vincolo. |
|
|
Il nome del set di dati del vincolo. |
|
|
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. |
|
|
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 di chiave primaria (a partire da 1). Questo valore è NULL
per i vincoli di chiave primaria. |
Ambito e sintassi
Le query su questa vista devono includere un qualificatore del set di dati. Per le query con un qualificatore set di dati, devi disporre delle autorizzazioni per il set di dati. Per ulteriori informazioni le informazioni, vedi Sintassi. La tabella seguente mostra gli ambiti delle risorse e delle regioni per questa vista:
Nome vista | Ambito risorsa | Ambito della regione |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; |
Livello del 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. In caso contrario specificato, questo comando usa 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 in 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 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 | +---------------------------+--------------+-------------+------------------+-------------------------------+