Vista TABLE_CONSTRAINTS
La vista TABLE_CONSTRAINTS
contiene las relaciones de clave primaria y externa en un conjunto de datos de BigQuery.
Permisos necesarios
Necesitas los siguientes permisos de Identity and Access Management (IAM):
bigquery.tables.get
para ver las definiciones de clave primaria y externa.bigquery.tables.list
para ver esquemas de información de tabla.
Cada uno de los siguientes roles predefinidos tiene los permisos necesarios para realizar los flujos de trabajo detallados en este documento:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
Para obtener más información sobre las funciones de IAM y los permisos en BigQuery, consulta Funciones y permisos predefinidos.
Esquema
La vista INFORMATION_SCHEMA.TABLE_CONSTRAINTS
tiene el siguiente esquema:
Nombre de la columna | Tipo | Significado |
---|---|---|
|
|
El nombre del proyecto de la restricción. |
|
|
El nombre del conjunto de datos de la restricción. |
|
|
El nombre de la restricción. |
|
|
El nombre del proyecto de la tabla restringida. |
|
|
El nombre del conjunto de datos de la tabla restringida. |
|
|
El nombre de la tabla restringida. |
|
|
PRIMARY KEY o FOREIGN KEY |
|
|
YES o NO , lo cual depende de si una restricción es diferible. Solo se admite NO . |
|
|
Solo se admite NO . |
|
|
YES o NO , según si se aplica la restricción. Solo se admite NO . |
Permiso y sintaxis
Las consultas realizadas a esta vista deben tener un calificador de conjunto de datos. Para consultas con un calificador de conjunto de datos, debes tener permisos para el conjunto de datos. Para obtener más información, consulta Sintaxis. En la siguiente tabla, se explican los permisos de la región y los recursos para esta vista:
Nombre de la vista | Permiso del recurso | Permiso de la región |
---|---|---|
[PROJECT_ID.]DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS; |
Nivel de conjunto de datos | Ubicación del conjunto de datos |
Opcional: PROJECT_ID
: el ID del proyecto de Google Cloud. Si no se especifica, se usa el proyecto predeterminado.
Ejemplos
La siguiente consulta muestra las restricciones para una sola tabla en un conjunto de datos:
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE table_name = TABLE;
Reemplaza lo siguiente:
PROJECT_ID
: Opcional El nombre de tu proyecto de la nube. Si no se especifica, este comando usa el proyecto predeterminado.DATASET
: nombre del conjunto de datos.TABLE
: el nombre de la tabla.
Por otro lado, en la siguiente consulta se muestran las restricciones para todas las tablas de un conjunto de datos único.
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
Con las restricciones existentes, los resultados de la consulta son similares a los siguientes:
+-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+ | 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 | +-----+---------------------+-------------------+-----------------------+---------------------+--------------+------------+-----------------+---------------+--------------------+----------+
Si la tabla o el conjunto de datos no tienen restricciones, los resultados de la consulta se verán de la siguiente manera:
+-----------------------------+ | There is no data to display | +-----------------------------+