PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Chave primária para várias colunas no PostgreSQL?


Só pode haver um chave primária por tabela - conforme indicado pela palavra "primária".
Você pode ter mais UNIQUE colunas Curti:
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
);

Colunas que são (parte) da PRIMARY KEY estão marcados como NOT NULL automaticamente.

Ou use uma restrição de tabela em vez de uma restrição de coluna para criar um único multicoluna chave primária . Isso é semanticamente diferente do acima:agora, apenas a combinação de ambas as colunas deve ser exclusivo, cada coluna pode conter duplicatas por conta própria.
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)
);

Multicoluna UNIQUE restrições também são possíveis.

À parte:não use identificadores de caso CaMeL no Postgres. Use identificadores legais em letras minúsculas para que você nunca precise usar aspas duplas. Facilita sua vida. Ver: