2012-10-16 8 views
5

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 = '[email protected]' 
PGError: ERROR: duplicate key value violates unique constraint "unique_users_email" 
DETAIL: Key (email)=([email protected]) already exists. 
+0

おそらく変更をコミットする場所はありますか? また、試してみてください。 'ALTER TABLE "がユーザー" 無効CONSTRAINT "unique_users_emailを";' – jt234

+0

work.'PGErrorなかったjt234 @:ERROR:構文エラーまたはその近く "CONSTRAINT" LINE 1:ALTER TABLEのを"users" disable CONSTRAINT "unique_users_email"; '私の変更は、この問題を除いてうまくいくようです。 – AlexQueue

+0

どのようにDISABLE TRIGGER ALLについて?ここ – jt234

答えて

3

私は「unique_users_email」が実際にユニークインデックスではなく、制約の名前であることを賭けます。試してみてください:テーブルの\d説明を見ているときにpsqlの

DROP INDEX "unique_users_email";

最近のバージョンでは、あなたのユニークなインデックスと一意制約の違いを教えてください。

+0

表はpublicスキーマの一部でない場合は、スキーマを指定してください:索引のドロップmyschema.unique_users_email。 – buddamus

関連する問題