sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Clave principal para varias columnas en PostgreSQL?

Solo puede haber uno clave principal por tabla, como lo indica la palabra "principal".
Puede tener UNIQUE columnas como:

CREATE TABLE test(
   sl_no int PRIMARY KEY,  -- NOT NULL due to PK
   emp_id int UNIQUE NOT NULL,
   emp_name text,
   emp_addr text
);

Columnas que son (parte de) la PRIMARY KEY están marcados NOT NULL automáticamente.

O use una restricción de tabla en lugar de una restricción de columna para crear un solo multicolumna clave principal . Esto es semánticamente diferente de lo anterior:ahora, solo la combinación de ambas columnas debe ser único, cada columna puede contener duplicados por sí misma.

CREATE TABLE test(
   sl_no int,     -- NOT NULL due to PK below
   emp_id int ,   -- NOT NULL due to PK below
   emp_name text,
   emp_addr text,
   PRIMARY KEY (sl_no, emp_id)
);

Multicolumna UNIQUE las restricciones también son posibles.

Aparte:no use identificadores de casos CaMeL en Postgres. Use identificadores legales en minúsculas para que nunca tenga que usar comillas dobles. Hace tu vida más fácil. Ver: