PostgreSQL中多列的主键?

时间:2014-05-08 05:10:25

标签: postgresql database-design primary-key ddl 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
);

注意:我想让"EmpID"也成为主键。

2 个答案:

答案 0 :(得分:27)

每个表只能有一个主键。这就是" primary"提示。

您可以有其他UNIQUE columns

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

或者要使单个multicolumn primary key,使用表约束而不是列约束:

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

除此之外:我的建议是不要在Postgres中使用CaMeL案例标识符。永远。让您的生活更轻松。

答案 1 :(得分:0)

我认为可以。

Create table "Test" 
(
   "SlNo" int ,
   "EmpID" int , 
   "Empname" text),
   "EmpAddress" text,
   PRIMARY KEY (SlNo, EmpID)
);