PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Chiave primaria per più colonne in PostgreSQL?

Può essercene solo uno chiave primaria per tabella - come indicato dalla parola "primary".
Puoi avere ulteriori UNIQUE colonne come:

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
);

Colonne che fanno (parte di) la PRIMARY KEY sono contrassegnati con NOT NULL automaticamente.

Oppure usa un vincolo di tabella invece di un vincolo di colonna per creare un singolo multicolonna chiave primaria . Questo è semanticamente diverso da quanto sopra:ora, solo la combinazione di entrambe le colonne devono essere univoche, ogni colonna può contenere duplicati da sola.

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)
);

Multicolonna UNIQUE sono possibili anche vincoli.

A parte:non utilizzare identificatori di maiuscole e minuscole CaMeL in Postgres. Usa identificatori legali, minuscoli in modo da non dover mai usare virgolette. Ti semplifica la vita. Vedi: