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 |
---|---|---|
|
|
O nome do projeto de restrição. |
|
|
O nome do conjunto de dados de restrição. |
|
|
O nome da restrição. |
|
|
O nome do projeto da tabela restrita. |
|
|
O nome do conjunto de dados da tabela restrita. |
|
|
O nome da tabela restrito. |
|
|
PRIMARY KEY ou
FOREIGN KEY . |
|
|
YES ou NO , consoante uma restrição seja
adiável. Apenas NO é suportado. |
|
|
Apenas NO é suportado. |
|
|
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 |
-
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 | +-----------------------------+