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

CONSTRAINT_CATALOG

STRING

Nombre del proyecto de la restricción.

CONSTRAINT_SCHEMA

STRING

Nombre del conjunto de datos de la restricción.

CONSTRAINT_NAME

STRING

Nombre de la restricción.

TABLE_CATALOG

STRING

Nombre del proyecto de la tabla restringida.

TABLE_SCHEMA

STRING

Nombre del conjunto de datos de la tabla restringida.

TABLE_NAME

STRING

Nombre de la tabla restringida.

CONSTRAINT_TYPE

STRING

Puede ser PRIMARY KEY o FOREIGN KEY.

IS_DEFERRABLE

STRING

YES o NO, en función de si una restricción es diferible. Solo se admite NO.

INITIALLY_DEFERRED

STRING

Solo se admite NO.

ENFORCED

STRING

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
Sustituye lo siguiente:
  • 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 |
+-----------------------------+