7

PG で:

一意の電子メールを含むユーザー テーブルを作成しましたが、後で電子メールを一意にするべきではないと判断しました。メール フィールドを一意にしないように変更をプッシュしましたが (ORM を使用しているため、実際に発生した正確な SQL はわかりません)、PG では重複したメール アドレスを使用することはできません。

インデックスを確認しましたが、一意ではありませんが、電子メール アドレスが重複しないようにするための制約があります。ただし、この制約を削除するのに問題があります。私は何を間違っていますか?

SQL> ALTER TABLE "users" DROP CONSTRAINT "unique_users_email"
PGError: ERROR:  constraint "unique_users_email" of relation "users" does not exist

SQL> UPDATE users SET email = 'test@test.com'
PGError: ERROR:  duplicate key value violates unique constraint "unique_users_email"
DETAIL:  Key (email)=(test@test.com) already exists.
4

1 に答える 1

4

「unique_users_email」は、実際には制約ではなく一意のインデックスの名前だと思います。試す:

DROP INDEX "unique_users_email";

\d最近のバージョンの psql では、テーブルの説明を見ると、一意のインデックスと一意の制約の違いがわかります。

于 2012-10-24T22:52:29.600 に答える