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

Posted

技术标签:

【中文标题】如何更改 PostgreSQL 表并使列唯一?【英文标题】:How do I ALTER a PostgreSQL table and make a column unique? 【发布时间】:2010-10-02 22:31:50 【问题描述】:

我在 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 表格使永久链接在表格中唯一。

【问题讨论】:

create unique index on foo_table (permalink) 【参考方案1】:

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

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

【讨论】:

这似乎不适用于:ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE (payload::text, name);ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE ((payload::text), name);【参考方案2】:

或者,让数据库使用以下命令自动分配一个约束名称:

ALTER TABLE foo ADD UNIQUE (thecolumn);

【讨论】:

如果你这样做,postgres 将创建约束,但名称将“自动”分配是单词“add”。我刚试过 当我使用上面的语法时,Postgress 会创建一个名为 mytable_mycolumn_key 的新约束,我对此很满意 :-)【参考方案3】:

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

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn);

谢谢Fred。

【讨论】:

以上是关于如何更改 PostgreSQL 表并使列唯一?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Bootstrap 4 和 Scss 将容器的宽度覆盖为 1440px 并使列同时响应

PostgreSQL - 如何从“选择不同”查询创建“维度”表并创建主键和外键?

MySQL:使列独一无二?

如何将数据加载到 Hive 表并使其在 Impala 中也可访问

如何在 Ruby on Rails 迁移中使列唯一并为其编制索引?

在 impala 中更改表:使列成为主键