Vista KEY_COLUMN_USAGE

A vista KEY_COLUMN_USAGE contém colunas das tabelas de TABLE_CONSTRAINTS que são restritas como chaves por restrições de chave primária e chave externa.

Esquema

A vista INFORMATION_SCHEMA.KEY_COLUMN_USAGE tem o seguinte esquema:

Nome da coluna Tipo de dados Valor

CONSTRAINT_CATALOG

STRING

O nome do projeto de restrição.

CONSTRAINT_SCHEMA

STRING

O nome do conjunto de dados de restrição.

CONSTRAINT_NAME

STRING

O nome da restrição.

TABLE_CATALOG

STRING

O nome do projeto da tabela restrita.

TABLE_SCHEMA

STRING

O nome do conjunto de dados da tabela restrita.

TABLE_NAME

STRING

O nome da tabela restrita.

COLUMN_NAME

STRING

O nome da coluna restrita.

ORDINAL_POSITION

INT64

A posição ordinal da coluna na chave de restrição (a começar em 1).

POSITION_IN_UNIQUE_CONSTRAINT

INT64

Para chaves externas, a posição ordinal da coluna na restrição de chave primária (a começar em 1). Este valor é NULL para restrições de chave primária.

Âmbito e sintaxe

As consultas nesta vista têm de incluir um qualificador de conjunto de dados. Para consultas com um qualificador de conjunto de dados, tem de ter autorizações para o conjunto de dados. Para mais informações, consulte Sintaxe. A tabela seguinte mostra os âmbitos de região e de recursos para esta vista:

Nome da visualização de propriedade Âmbito do recurso Âmbito da região
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; Nível do conjunto de dados Localização do conjunto de dados
Substitua o seguinte:
  • Opcional: PROJECT_ID: o ID do seu projeto do Trusted Cloud Google Cloud. Se não for especificado, é usado o projeto predefinido.

Para consultas com um qualificador de conjunto de dados, tem de ter autorizações para o conjunto de dados. Para consultas com um qualificador de região, tem de ter autorizações para o projeto.

Exemplos

Exemplo 1:

A consulta seguinte mostra as restrições para uma única tabela num conjunto de dados:

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE table_name = TABLE;

Substitua o seguinte:

  • PROJECT_ID: opcional. O nome do seu projeto na nuvem. Se não for especificado, este comando usa o projeto predefinido.
  • DATASET: o nome do conjunto de dados.
  • TABLE: o nome da tabela.

Por outro lado, a seguinte consulta mostra a utilização das colunas principais para todas as tabelas num único conjunto de dados.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Se uma tabela ou um conjunto de dados não tiver restrições, os resultados da consulta têm o seguinte aspeto:

+-----------------------------+
| There is no data to display |
+-----------------------------+
Exemplo 2:

As seguintes declarações DDL criam uma tabela de chaves principais e uma tabela de chaves externas.

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 a consulta for feita com a declaração no Exemplo 1, os resultados da consulta são semelhantes aos seguintes. Tenha em atenção que CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA e as colunas duplicadas não estão incluídas nos resultados de exemplo.

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