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: