如何更改PostgreSQL表并使列唯一?

问题描述:

我有一个表中的PostgreSQL在架构是这样的:如何更改PostgreSQL表并使列唯一?

CREATE TABLE "foo_table" (
    "id" serial NOT NULL PRIMARY KEY, 
    "permalink" varchar(200) NOT NULL, 
    "text" varchar(512) NOT NULL, 
    "timestamp" timestamp with time zone NOT NULL 
) 

现在我想通过ALTER-ING表进行跨表中的永久唯一的。 任何人都可以帮助我吗?

TIA

+2

`创建foo_table唯一索引(永久链接)` – 2014-10-20 17:48:02

我想通了,从PostgreSQL文档,确切的语法是:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn); 

感谢Fred

或者,有DB使用自动分配约束名称:

ALTER TABLE foo ADD UNIQUE (thecolumn); 

它也可以创造超过1列的唯一约束:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (column1, column2); 
+0

这似乎不适用于类似于: `ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE(payload :: text,name);`或`ALTER TABLE actions ADD CONST RAINT actions_unique_constraint UNIQUE((payload :: text),name);` – writofmandamus 2017-10-06 22:22:59