Visualização de CONSTRAINT_COLUMN_USAGE
A visualização CONSTRAINT_COLUMN_USAGE contém todas as colunas usadas por
restrições.
Para restrições de PRIMARY KEY, estas são as colunas da visualização KEY_COLUMN_USAGE. Para restrições de FOREIGN KEY, estas são as colunas das tabelas referenciadas.
Funções exigidas
Para receber as permissões necessárias para consultar a visualização INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE,
peça ao administrador para conceder a você o papel
Editor de dados do BigQuery (roles/bigquery.dataEditor) do IAM no seu projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém
as permissões necessárias para consultar a visualização INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para consultar a visualização INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE:
-
Visualizar definições de chave primária e externa:
bigquery.tables.get -
Visualizar esquemas de informações da tabela:
bigquery.tables.list
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Esquema
A visualização INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE tem o seguinte esquema:
| Nome da coluna | Tipo de dados | Valor |
|---|---|---|
|
|
Nome do projeto que contém o conjunto de dados. |
|
|
O nome do conjunto de dados que contém a tabela. Também
conhecido como datasetId. |
|
|
O nome da tabela. Também conhecido como o
tableId. |
|
|
O nome da coluna. |
|
|
O nome do projeto de restrição. |
|
|
O nome do conjunto de dados de restrição. |
|
|
O nome da restrição. Pode ser o nome da chave primária, se a coluna for usada pela chave primária, ou o nome da chave externa, se a coluna for usada por uma chave externa. |
Para estabilidade, recomendamos que você liste explicitamente as colunas nas consultas do esquema de informações em vez de usar um caractere curinga (SELECT *). A listagem explícita de colunas impede que as consultas sejam interrompidas se o esquema subjacente mudar.
Escopo e sintaxe
As consultas nesta visualização precisam ter um qualificador de conjunto de dados. Para consultas com um qualificador de conjunto de dados, é preciso ter permissões para o conjunto de dados. Para mais informações, consulte Sintaxe. A tabela a seguir explica os escopos de região e recurso dessa visualização:
| Nome da visualização | Escopo do recurso | Escopo da região |
|---|---|---|
[PROJECT_ID.]DATASET.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE; |
Nível do conjunto de dados | Local do conjunto de dados |
-
Opcional:
PROJECT_ID: o ID do seu Google Cloud projeto. Se não for especificado, o projeto padrão será usado.
Exemplos
A consulta a seguir mostra as restrições de uma única tabela em um conjunto de dados:
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE table_name = TABLE;
Substitua:
PROJECT_ID: opcional. O nome do projeto na nuvem. Se não for especificado, esse comando usará o projeto padrão.DATASET: o nome do conjunto de dados.TABLE: o nome da tabela.
Por outro lado, a consulta a seguir mostra as restrições de todas as tabelas em um único conjunto de dados.
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;
Com as restrições atuais, os resultados da consulta serão semelhantes aos seguintes:
+-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+ | row | table_catalog | table_schema | table_name | column_name | constraint_catalog | constraint_schema | constraint_name | +-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+ | 1 | myConstraintCatalog | myDataset | orders | o_okey | myConstraintCatalog | myDataset | orders.pk$ | | 2 | myConstraintCatalog | myDataset | orders | o_okey | myConstraintCatalog | myDataset | lineitem.lineitem_order | +-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+
Se a tabela ou o conjunto de dados não tiver restrições, os resultados da consulta serão parecidos com estes:
+-----------------------------+ | There is no data to display | +-----------------------------+