sql >> Databáze >  >> RDS >> PostgreSQL

Primární klíč pro více sloupců v PostgreSQL?

Může být pouze jeden primární klíč na tabulku – jak je označeno slovem „primární“.
Můžete mít další UNIQUE sloupce jako:

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

Sloupce, které jsou (jeho součástí) PRIMARY KEY jsou označeny NOT NULL automaticky.

Nebo použijte omezení tabulky místo omezení sloupce k vytvoření jednoho více sloupců primární klíč . To je sémanticky odlišné od výše uvedeného:Nyní pouze kombinace z obou sloupců musí být jedinečné, každý sloupec může obsahovat duplikáty samostatně.

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

Vícesloupcové UNIQUE omezení jsou také možná.

Stranou:V Postgresu nepoužívejte identifikátory případu CaMeL. Používejte legální identifikátory s malými písmeny, abyste nikdy nemuseli používat dvojité uvozovky. Usnadňuje vám život. Viz:



  1. IntegrityError:porušení cizího klíče při odstranění

  2. OpenRowSet a OpenDataSet bez práv správce systému

  3. statement.execute() vrací chybu s lomítkem na konci PL/SQL

  4. Použití HHVM s WordPress