为现有的PostgreSQL索引添加唯一约束

时间:2017-09-11 20:46:03

标签: sql ruby-on-rails postgresql indexing unique-constraint

我的PostgreSQL 9.3数据库中有一个索引:

CREATE INDEX index_foos_on_bar_and_baz ON foos USING btree (bar, baz);

(来自使用Ruby on Rails的模式迁移)

索引存在并使事情变得更快。现在我已经清理了重复的foos,我想让这个索引变得独一无二:

CREATE UNIQUE INDEX index_foos_on_bar_and_baz ON foos USING btree (bar, baz);

有没有办法改变现有索引并使其独一无二?或者更容易/更快地删除现有索引并创建一个新的独特索引?

2 个答案:

答案 0 :(得分:7)

无法将索引更改为唯一索引。您可以在alter index document处看到可以更改为索引的内容。

在这种情况下,您需要删除并创建新的唯一索引。

答案 1 :(得分:2)

您可以通过以下方式更改索引以添加“ UNIQUE”约束:

 ALTER TABLE distributors 
 ADD CONSTRAINT dist_id_zipcode_key
 UNIQUE (dist_id, zipcode);

在此处查看官方文档:https://www.postgresql.org/docs/current/sql-altertable.html