刪除指數的獨特性在我的PostgreSQL數據庫我有一個唯一索引創建這樣:PostgreSQL中
CREATE UNIQUE INDEX my_index ON my_table USING btree (my_column)
有沒有辦法改變該指數將刪除唯一約束?我看着ALTER INDEX documentation,但它似乎並沒有做我所需要的。
我知道我可以刪除索引並創建另一個索引,但是如果索引存在,我希望找到更好的方法。
刪除指數的獨特性在我的PostgreSQL數據庫我有一個唯一索引創建這樣:PostgreSQL中
CREATE UNIQUE INDEX my_index ON my_table USING btree (my_column)
有沒有辦法改變該指數將刪除唯一約束?我看着ALTER INDEX documentation,但它似乎並沒有做我所需要的。
我知道我可以刪除索引並創建另一個索引,但是如果索引存在,我希望找到更好的方法。
您也許能夠刪除唯一的CONSTRAINT
,而不是INDEX
本身。
檢查CONSTRAINTS
通過select * from information_schema.table_constraints;
然後,如果你找到一個,你應該能夠放棄它喜歡:
ALTER TABLE "my_table" DROP CONSTRAINT "unique_something"
編輯:一個相關的問題this question
我不認爲這是可能的......即使在pgAdmin III用戶界面中,如果您嘗試編輯使用您的語句創建的約束,「唯一」框會變灰;你不能通過UI改變它。結合你對ALTER INDEX文檔的研究,我會說它不能完成。
描述假設您有以下幾種:
Indexes:
"feature_pkey" PRIMARY KEY, btree (id, f_id)
"feature_unique" UNIQUE, btree (feature, f_class)
"feature_constraint" UNIQUE CONSTRAINT, btree (feature, f_class)
要刪除唯一約束,你可以使用ALTER TABLE:
ALTER TABLE feature DROP CONSTRAINT feature_constraint;
要刪除的UNIQUE [索引],你可以使用DROP INDEX:
DROP INDEX feature_unique;
爲什麼官方文檔不包含這樣的例子 –
感謝您的建議。不幸的是,沒有這樣的限制。 –
是的,我想到了這一點,但在Postgres中檢查了它...添加一個唯一的索引不會爲表添加約束......它似乎是索引本身的一部分。 – dcsohl
@dcsohl是的。這很有趣,我研究它並根據[這個問題](http://stackoverflow.com/questions/6239657/postgresql-can-you-create-an-index-in-the-create-table-definition# 6239678)唯一的約束可以創建索引(但不是其他方式) – 2013-08-29 16:11:14