Todos los términos del glosario

Clave primaria

¿Qué es una clave primaria en PostgreSQL?

Una clave primaria es una columna o un conjunto de columnas que identifica de forma única cada fila. PostgreSQL la impone con un índice B-tree único y NOT NULL.

Una restricción de clave primaria marca una columna, o un grupo de columnas, como el identificador de las filas de una tabla: sus valores deben ser únicos y no nulos. Una tabla puede tener como máximo una clave primaria.

Agregar una clave primaria crea automáticamente un índice B-tree único sobre sus columnas y las marca como NOT NULL. Las claves foráneas de otras tablas suelen hacer referencia a ella, y muchas herramientas esperan que cada tabla tenga una. Las opciones habituales son una columna de identidad o una clave natural, como un código de producto.

Ejemplo

El ejemplo crea una tabla con sku como clave, inserta una clave duplicada con ON CONFLICT DO NOTHING para que se omita en lugar de fallar, y lista el índice que PostgreSQL creó para la clave.

CREATE TABLE products (
  sku text PRIMARY KEY,
  name text NOT NULL
);
INSERT INTO products VALUES ('P-1', 'Lamp');
INSERT INTO products VALUES ('P-1', 'Desk') ON CONFLICT DO NOTHING;

SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'products';

SQL simple para PostgreSQL 16 o 17 estándar, sin extensiones. Ejecútalo en una base de datos vacía que puedas descartar.

Fuentes

Documentación oficial de PostgreSQL (en inglés).

Términos relacionados