95

私のPostgreSQLデータベースには、次の方法で作成された一意のインデックスがあります。

CREATE UNIQUE INDEX <my_index> ON <my_table> USING btree (my_column)

一意の制約を削除するためにインデックスを変更する方法はありますか? ALTER INDEX のドキュメントを見ましたが、必要なことをしていないようです。

インデックスを削除して別のインデックスを作成できることはわかっていますが、より良い方法があればそれを見つけたいと思います。

4

6 に答える 6

47

次のものがあるとします。

Indexes:
    "feature_pkey" PRIMARY KEY, btree (id, f_id)
    "feature_unique" UNIQUE, btree (feature, f_class)
    "feature_constraint" UNIQUE CONSTRAINT, btree (feature, f_class)

UNIQUE CONSTRAINT を削除するには、ALTER TABLEを使用します。

ALTER TABLE feature DROP CONSTRAINT feature_constraint;

PRIMARY KEY を削除するには、 ALTER TABLEも使用します。

ALTER TABLE feature DROP CONSTRAINT feature_pkey;

UNIQUE [index] を削除するには、DROP INDEXを使用します。

DROP INDEX feature_unique;
于 2016-07-20T18:55:17.523 に答える
2

同じ質問を何時間も検索しましたが、正しい答えが得られないようです----与えられたすべての答えがうまくいきませんでした。

nullではないため、見つけるのにも時間がかかりました。どうやら何らかの理由で、過半数認定のコードを使用しても機能しないようです。

私はnullでないバージョンコードを取得しました。このようなものです

ALTER TABLE tablename
ALTER COLUMN column_want_to_remove_constriant
DROP NOT NULL

残念ながら、'not null' を 'unique' に変更してもうまくいきません。

于 2020-02-28T11:19:17.380 に答える