首页 文章

我可以在PostgreSQL表创建后添加UNIQUE约束吗?

提问于
浏览
133

我有下表:

tickername | tickerbbname  | tickertype
------------+---------------+------------
 USDZAR     | USDZAR Curncy | C
 EURCZK     | EURCZK Curncy | C
 EURPLN     | EURPLN Curncy | C
 USDBRL     | USDBRL Curncy | C
 USDTRY     | USDTRY Curncy | C
 EURHUF     | EURHUF Curncy | C
 USDRUB     | USDRUB Curncy | C

对于任何给定的 tickername / tickerbbname 对,我不希望有任何列 . 我已经创建了表并且其中包含大量数据(我已经确保它符合唯一标准) . 然而,随着它变得越来越大,错误的空间越来越大 .

有没有办法在此时添加 UNIQUE 约束?

4 回答

  • 29

    是的你可以 . 但是如果您的 table 上有非唯一条目,它将失败 . 以下是如何在表上添加唯一约束 . 如果你正在使用PostgreSQL 9.x,你可以按照以下说明操作 .

    CREATE UNIQUE INDEX constraint_name ON table_name (columns);
    
  • 271

    是的,您可以在事后添加UNIQUE约束 . 但是,如果您的表中有非唯一条目,Postgres会在您更正之前对其进行投诉 .

  • 3

    psql 的内联帮助:

    \h ALTER TABLE
    

    还记录在postgres docs(一个很好的资源,加上易于阅读) .

    ALTER TABLE tablename ADD CONSTRAINT constraintname UNIQUE (columns);
    
  • 2

    如果你的表已经有一个基于let的说明:name和lastname,并且你想添加一个唯一约束,你必须通过以下方式删除整个约束:

    ALTER TABLE your_table DROP CONSTRAINT constraint_name;
    

    确保要添加的新约束是唯一的/非空(如果它的Microsoft Sql,它只能包含一个空值)跨该表上的所有数据,然后您可以重新创建它 .

    ALTER TABLE table_name
    ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);
    

相关问题