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

Bai*_*ose 145 sql postgresql unique-constraint

我在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
)
Run Code Online (Sandbox Code Playgroud)

现在,我希望通过ALTER-ing表使表中的固定链接唯一.任何人都可以帮我吗?

TIA

Bai*_*ose 241

我从PostgreSQL文档中找到了它,确切的语法是:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn);
Run Code Online (Sandbox Code Playgroud)

谢谢Fred.

  • 如果您需要扭转这一情况。`ALTER TABLE the_table DROP CONSTRAINT IF EXISTS|constraint_name;` (11认同)

Cli*_*chl 217

或者,让DB使用以下命令自动分配约束名称:

ALTER TABLE foo ADD UNIQUE (thecolumn);
Run Code Online (Sandbox Code Playgroud)

  • 当我使用上面的语法时,Postgress 创建名为“mytable_mycolumn_key”的新约束,我对此非常满意:-) (3认同)
  • 如果你这样做,postgres 将创建约束,但名称将“自动”分配为单词“add”。我刚刚尝试过 (2认同)

小智 37

也可以创建一个以上列的唯一约束:

ALTER TABLE the_table 
    ADD CONSTRAINT constraint_name UNIQUE (column1, column2);
Run Code Online (Sandbox Code Playgroud)


小智 6

尝试以下操作

ALTER TABLE table_name ADD UNIQUE (column_name);
Run Code Online (Sandbox Code Playgroud)