Vista CONSTRAINT_COLUMN_USAGE

La vista CONSTRAINT_COLUMN_USAGE contiene todas las columnas que usan las restricciones. En el caso de las restricciones PRIMARY KEY, estas son las columnas de la vista KEY_COLUMN_USAGE. En las restricciones FOREIGN KEY, estas son las columnas de las tablas a las que se hace referencia.

Roles obligatorios

Para obtener los permisos que necesitas para consultar la vista INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE, pídele a tu administrador que te otorgue el rol de IAM de editor de datos de BigQuery (roles/bigquery.dataEditor) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para consultar la vista INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para consultar la vista INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE:

  • Ver las definiciones de clave primaria y externa: bigquery.tables.get
  • Ver esquemas de información de tabla: bigquery.tables.list

También puedes obtener estos permisos con roles personalizados o otros roles predefinidos.

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.CONSTRAINT_COLUMN_USAGE tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor

table_catalog

STRING

El nombre del proyecto que contiene el conjunto de datos.

table_schema

STRING

El nombre del conjunto de datos que contiene la tabla. También se conoce como datasetId.

table_name

STRING

El nombre de la tabla. También se conoce como el tableId.

column_name

STRING

El nombre de la columna.

constraint_catalog

STRING

El nombre del proyecto de la restricción.

constraint_schema

STRING

El nombre del conjunto de datos de la restricción.

constraint_name

STRING

El nombre de la restricción. Puede ser el nombre de la clave primaria si esta usa la columna, o el nombre de la clave externa si una clave externa usa la columna.

Para mayor estabilidad, te recomendamos que enumeres las columnas de forma explícita en las consultas del esquema de información en lugar de usar un comodín (SELECT *). Si enumeras las columnas de forma explícita, se evita que las consultas se interrumpan si cambia el esquema subyacente.

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.CONSTRAINT_COLUMN_USAGE; Nivel de conjunto de datos Ubicación del conjunto de datos
Reemplaza lo siguiente:
  • Opcional: PROJECT_ID es el ID de tu Google Cloud proyecto. 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.CONSTRAINT_COLUMN_USAGE
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.CONSTRAINT_COLUMN_USAGE;

Con las restricciones existentes, los resultados de la consulta son similares a los siguientes:

+-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+
| 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 |
+-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+

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 |
+-----------------------------+