0

如何使用PostgreSQL为单个表中的多列提供主键?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"也是主键。

+0

我不知道我很明白,你是否试图用两列或两个完全独立的键创建单个主键? –

+0

@Joachim Isaksson,两列的单一主键。 – Meem

回答

15

每个表只能有一个主键。这就是“主要”这个词所暗示的。

您可以额外购买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的使用驼峰标识符。永远。让你的生活更轻松。