sql >> Databasteknik >  >> RDS >> PostgreSQL

Primär nyckel för flera kolumner i PostgreSQL?

Det kan bara finnas en primärnyckel per tabell - som indikeras av ordet "primär".
Du kan ha ytterligare UNIQUE kolumner gillar:

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

Kolumner som är (en del av) PRIMARY KEY är märkta med NOT NULL automatiskt.

Eller använd en tabellrestriktion istället för en kolumnrestriktion för att skapa en enda flerkolumn primärnyckel . Detta skiljer sig semantiskt från ovanstående:Nu är det bara kombinationen av båda kolumnerna måste vara unika, varje kolumn kan innehålla dubbletter för sig.

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

Flerkolumn UNIQUE begränsningar är också möjliga.

Bortsett från:Använd inte CaMeL-case-identifierare i Postgres. Använd lagliga identifierare med små bokstäver så att du aldrig behöver använda dubbla citattecken. Gör ditt liv enklare. Se:



  1. MySQL-tabellen är markerad som kraschad och den senaste (automatiska?) reparationen misslyckades

  2. mysql-fel 'TYPE=MyISAM'

  3. SQL Gilla till RegEx

  4. hur frågar jag kopplingstabellen med viloläge?