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

CONSTRAINT_CATALOG

STRING

Il nome del progetto del vincolo.

CONSTRAINT_SCHEMA

STRING

Il nome del set di dati dei vincoli.

CONSTRAINT_NAME

STRING

Il nome del vincolo.

TABLE_CATALOG

STRING

Il nome del progetto della tabella vincolata.

TABLE_SCHEMA

STRING

Il nome del set di dati della tabella con vincoli.

TABLE_NAME

STRING

Il nome della tabella vincolata.

COLUMN_NAME

STRING

Il nome della colonna vincolata.

ORDINAL_POSITION

INT64

La posizione ordinale della colonna all'interno della chiave del vincolo (a partire da 1).

POSITION_IN_UNIQUE_CONSTRAINT

INT64

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
Sostituisci quanto segue:

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