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 de clave principal y clave externa.

Esquema

La vista INFORMATION_SCHEMA.KEY_COLUMN_USAGE tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor

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

El nombre de la tabla restringida.

COLUMN_NAME

STRING

Nombre de la columna restringida.

ORDINAL_POSITION

INT64

Posición ordinal de la columna en la clave de la restricción (empezando por 1).

POSITION_IN_UNIQUE_CONSTRAINT

INT64

En el caso de las claves externas, es la posición ordinal de la columna en la restricción de clave principal (empezando por 1). Este valor es NULL para las restricciones de clave principal.

Á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_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; 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.

En el caso de las consultas con un calificador de conjunto de datos, debe tener permisos para el conjunto de datos. En el caso de las consultas con un calificador de región, debes tener permisos para el proyecto.

Ejemplos

Ejemplo 1:

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

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE
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 el uso de las columnas clave de todas las tablas de un solo conjunto de datos.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Si una tabla o un conjunto de datos no tiene restricciones, los resultados de la consulta tendrán este aspecto:

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

Las siguientes instrucciones DDL crean una tabla de clave principal y una tabla de clave externa.

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 con la instrucción del ejemplo 1, los resultados de la consulta serán similares a los siguientes. Tenga en cuenta que CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA y las columnas 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                             |
+---------------------------+--------------+-------------+------------------+-------------------------------+