Vista TABLE_CONSTRAINTS

A visualização de propriedade TABLE_CONSTRAINTS contém as relações de chave primária e chave externa num conjunto de dados do BigQuery.

Autorizações necessárias

Precisa das seguintes autorizações da gestão de identidade e de acesso (IAM):

  • bigquery.tables.get para ver as definições de chaves principais e externas.
  • bigquery.tables.list para ver esquemas de informações de tabelas.

Cada uma das seguintes funções predefinidas tem as autorizações necessárias para realizar os fluxos de trabalho detalhados neste documento:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Para mais informações acerca das funções e autorizações do IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.

Esquema

A vista INFORMATION_SCHEMA.TABLE_CONSTRAINTS tem o seguinte esquema:

Nome da coluna Tipo Significado

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 restrito.

CONSTRAINT_TYPE

STRING

PRIMARY KEY ou FOREIGN KEY.

IS_DEFERRABLE

STRING

YES ou NO, consoante uma restrição seja adiável. Apenas NO é suportado.

INITIALLY_DEFERRED

STRING

Apenas NO é suportado.

ENFORCED

STRING

YES ou NO, consoante a restrição seja aplicada.
Apenas NO é suportado.

Â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.INFORMATION_SCHEMA.TABLE_CONSTRAINTS; 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.

Exemplos

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

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS
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 as restrições para todas as tabelas num único conjunto de dados.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Com as restrições existentes, os resultados da consulta são semelhantes aos seguintes:

+-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+
| 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 a tabela ou o conjunto de dados não tiver restrições, os resultados da consulta têm o seguinte aspeto:

+-----------------------------+
| There is no data to display |
+-----------------------------+