Vista TABLE_CONSTRAINTS
La vista TABLE_CONSTRAINTS
contiene las relaciones de clave principal y clave externa de un conjunto de datos de BigQuery.
Permisos obligatorios
Necesitas los siguientes permisos de gestión de identidades y accesos (IAM):
bigquery.tables.get
para ver las definiciones de las claves primarias y externas.bigquery.tables.list
para ver los esquemas de información de las tablas.
Cada uno de los siguientes roles predefinidos tiene los permisos necesarios para realizar los flujos de trabajo que se detallan en este documento:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.
Esquema
La vista INFORMATION_SCHEMA.TABLE_CONSTRAINTS
tiene el siguiente esquema:
Nombre de la columna | Tipo | Significado |
---|---|---|
|
|
Nombre del proyecto de la restricción. |
|
|
Nombre del conjunto de datos de la restricción. |
|
|
Nombre de la restricción. |
|
|
Nombre del proyecto de la tabla restringida. |
|
|
Nombre del conjunto de datos de la tabla restringida. |
|
|
Nombre de la tabla restringida. |
|
|
Puede ser PRIMARY KEY o FOREIGN KEY . |
|
|
YES o NO , en función de si una restricción es
diferible. Solo se admite NO . |
|
|
Solo se admite NO . |
|
|
YES o NO en función de si se aplica la restricción. Solo se admite NO . |
Ámbito y sintaxis
Las consultas en esta vista deben incluir un calificador de conjunto de datos. En el caso de las consultas con un calificador de conjunto de datos, debe tener permisos para el conjunto de datos. Para obtener más información, consulta la sección Sintaxis. En la siguiente tabla se muestran los ámbitos de región y de recurso de esta vista:
Nombre de la vista | Ámbito de los recursos | Ámbito de la región |
---|---|---|
[PROJECT_ID.]DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS; |
Nivel del conjunto de datos | Ubicación del conjunto de datos |
-
Opcional:
PROJECT_ID
: el ID de tu Google Cloud proyecto. Si no se especifica, se usa el proyecto predeterminado.
Ejemplos
La siguiente consulta muestra las restricciones de una sola tabla de un conjunto de datos:
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE table_name = TABLE;
Haz los cambios siguientes:
PROJECT_ID
: opcional. El nombre de tu proyecto de Cloud. Si no se especifica, este comando usa el proyecto predeterminado.DATASET
: el nombre de tu conjunto de datos.TABLE
: el nombre de la tabla.
Por el contrario, la siguiente consulta muestra las restricciones de todas las tablas de un solo conjunto de datos.
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
Con las restricciones actuales, 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 serán los siguientes:
+-----------------------------+ | There is no data to display | +-----------------------------+