PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Primärschlüssel für mehrere Spalten in PostgreSQL?

Es kann nur eine geben Primärschlüssel pro Tabelle – wie durch das Wort „primary“ angegeben.
Sie können zusätzliche UNIQUE Spalten wie:

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

Spalten, die (ein Teil von) dem PRIMARY KEY sind sind mit NOT NULL gekennzeichnet automatisch.

Oder verwenden Sie eine Tabellenbeschränkung anstelle einer Spaltenbeschränkung, um einen einzelnen mehrspaltig Primärschlüssel . Dies ist semantisch anders als oben:Jetzt nur noch die Kombination beider Spalten muss eindeutig sein, jede Spalte kann Duplikate für sich enthalten.

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

Mehrspaltig UNIQUE Beschränkungen sind ebenfalls möglich.

Beiseite:Verwenden Sie in Postgres keine CaMeL-Case-Identifikatoren. Verwenden Sie zulässige Bezeichner in Kleinbuchstaben, damit Sie niemals doppelte Anführungszeichen verwenden müssen. Macht Ihr Leben einfacher. Siehe: