2012-10-16 16 views
5

In PG:Problem Eindeutige Einschränkung

Ich habe eine Benutzer-Tabelle, die eindeutige E-Mails enthält, aber später entschieden, dass E-Mails nicht eindeutig sein sollten. Ich schob Änderungen, um mein E-Mail-Feld nicht eindeutig zu machen (ich benutze ein ORM, so dass ich nicht genau die genaue SQL, die stattgefunden hat), aber PG wird immer noch nicht zulassen, dass ich doppelte E-Mail-Adressen verwenden.

Ich habe den Index überprüft und es ist nicht eindeutig, aber es gibt eine Einschränkung, die mich davon abhält, doppelte E-Mail-Adressen zu haben. Allerdings habe ich Probleme, diese Einschränkung fallen zu lassen. Was mache ich falsch?

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

vielleicht gibt es einen Ort, um Änderungen zu bestätigen? Auch versuchen: 'ALTER TABLE "Benutzer" deaktivieren CONSTRAINT "unique_users_email";' – jt234

+0

@ jt234 Das ist nicht work.'PGError tat: Fehler: Syntaxfehler bei oder in der Nähe von "CONSTRAINT" LINE 1: ALTER TABLE "Benutzer" deaktivieren CONSTRAINT "unique_users_email"; 'Meine Änderungen scheinen gut zu funktionieren, außer für dieses Problem. – AlexQueue

+0

Wie wäre es mit DISABLE TRIGGER ALL? – jt234

Antwort

3

Ich wette, dass „unique_users_email“ ist eigentlich der Name eines einzigartigen Index eher als eine Einschränkung. Versuchen:

DROP INDEX "unique_users_email";

Neuere Versionen von psql sollten Sie den Unterschied zwischen einem eindeutigen Index und eine eindeutige Einschränkung sagen, wenn an der \d Beschreibung einer Tabelle suchen.

+0

Achten Sie darauf, das Schema anzugeben, wenn die Tabelle nicht Teil des öffentlichen Schemas ist: DROP INDEX myschema.unique_users_email; – buddamus

Verwandte Themen