PostgreSQL中多列的主键?

Mee*_*eem 8 postgresql ddl database-design primary-key composite-primary-key

如何使用PostgreSQL在单个表中为多列提供主键?

例:

Create table "Test" 
(
   "SlNo" int not null primary key,
   "EmpID" int not null, /* Want to become primary key */
   "Empname" varchar(50) null,
   "EmpAddress" varchar(50) null
);
Run Code Online (Sandbox Code Playgroud)

注意:我也想制作"EmpID"一个主键.

Erw*_*ter 32

每个表只能有一个主键.这就是"主要"一词暗示的含义.

您可以拥有其他UNIQUE.

CREATE TABLE test(
   sl_no int PRIMARY KEY,  -- NOT NULL automatically
   emp_id int UNIQUE NOT NULL,
   emp_name text,
   emp_addr text
);
Run Code Online (Sandbox Code Playgroud)

或者,为了使单个多列主键,使用表约束而不是列约束:

CREATE TABLE test(
   sl_no int,     -- NOT NULL automatically
   emp_id int ,   -- NOT NULL automatically
   emp_name text,
   emp_addr text,
   PRIMARY KEY (sl_no, emp_id)
);
Run Code Online (Sandbox Code Playgroud)

旁白:我的建议是不要在Postgres中使用CaMeL案例标识符.永远.让您的生活更轻松.


小智 7

如果您想指定主键约束的名称:

CREATE TABLE test(
   sl_no int not null,
   emp_id int not null,
   emp_name text,
   emp_addr text,
   constraint pk_test primary key (sl_no, emp_id)
);
Run Code Online (Sandbox Code Playgroud)

来源: https: //www.postgresqltutorial.com/postgresql-primary-key/