我有下表:
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
约束?
答案 0 :(得分:306)
psql
的内联帮助:
\h ALTER TABLE
还记录在postgres docs中(这是一个很好的资源,也很容易阅读)。
ALTER TABLE tablename ADD CONSTRAINT constraintname UNIQUE (columns);
答案 1 :(得分:31)
是的,你可以。但是如果您的桌子上有非唯一条目,它将会失败。以下是如何在表上添加唯一约束。如果你正在使用PostgreSQL 9.x,你可以按照以下说明进行操作。
CREATE UNIQUE INDEX constraint_name ON table_name (columns);
答案 2 :(得分:5)
是的,您可以在事后添加UNIQUE约束。但是,如果您的表中有非唯一条目,Postgres会在您更正之前对其进行投诉。
答案 3 :(得分:3)
如果你的表已经存在一个基于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);