Vista KEY_COLUMN_USAGE

La vista KEY_COLUMN_USAGE contiene columnas de las tablas de TABLE_CONSTRAINTS que están restringidas como claves por las restricciones PRIMARY KEY y FOREIGN KEY.

Esquema

La vista INFORMATION_SCHEMA.KEY_COLUMN_USAGE tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor

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.

TABLE_CATALOG

STRING

El nombre del proyecto de la tabla restringida.

TABLE_SCHEMA

STRING

El nombre del conjunto de datos de la tabla restringida.

TABLE_NAME

STRING

El nombre de la tabla restringida.

COLUMN_NAME

STRING

El nombre de la columna restringida.

ORDINAL_POSITION

INT64

La posición ordinal de la columna dentro de la clave de restricción (a partir de 1).

POSITION_IN_UNIQUE_CONSTRAINT

INT64

Para las claves externas, la posición ordinal de la columna dentro de la restricción de clave primaria (a partir de 1). Este valor es NULL para las restricciones de clave primaria.

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_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; Nivel de conjunto de datos Ubicación del conjunto de datos
Reemplaza lo siguiente:

  • Opcional: PROJECT_ID: el ID del proyecto de Google Cloud. Si no se especifica, se usa el proyecto predeterminado.

Para consultas con un calificador de conjunto de datos, debes tener permisos para el conjunto de datos. Para consultas con un calificador de región, debes tener permisos para el proyecto.

Ejemplos

Ejemplo 1:

La siguiente consulta muestra las restricciones para una sola tabla en un conjunto de datos:

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_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, la siguiente consulta muestra el uso de las columnas clave para todas las tablas en un solo conjunto de datos.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Si una tabla o un conjunto de datos no tienen restricciones, los resultados de la consulta se verán de la siguiente manera:

+-----------------------------+
| There is no data to display |
+-----------------------------+
Ejemplo 2:

Las siguientes declaraciones DDL crean una tabla de claves primarias y una tabla de claves externas.

CREATE TABLE composite_pk (x int64, y string, primary key (x, y) NOT ENFORCED);
CREATE TABLE table composite_fk (x int64, y string, z string,  primary key (x, y)
NOT ENFORCED, CONSTRAINT composite_fk foreign key (z, x)
REFERENCES composite_pk (y, x) NOT ENFORCED);

Si se consulta la declaración en el Ejemplo 1, los resultados de la consulta son similares a los siguientes. Ten en cuenta que las columnas CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA y duplicadas no se incluyen en los resultados de ejemplo.

+---------------------------+--------------+-------------+------------------+-------------------------------+
|     CONSTRAINT_NAME       |  TABLE_NAME  | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT |
+---------------------------+--------------+-------------+------------------+-------------------------------+
| composite_pk.pk$          | composite_pk | x           | 1                | NULL                          |
| composite_pk.pk$          | composite_pk | y           | 2                | NULL                          |
| composite_fk.pk$          | composite_fk | x           | 1                | NULL                          |
| composite_fk.pk$          | composite_fk | y           | 2                | NULL                          |
| composite_fk.composite_fk | composite_fk | z           | 1                | 2                             |
| composite_fk.composite_fk | composite_fk | x           | 2                | 1                             |
+---------------------------+--------------+-------------+------------------+-------------------------------+