Проблемы, возникающие при уникальном ограничении

В ПГ:

Я создал таблицу пользователей, содержащую уникальные электронные письма, но позже решил, что электронные письма не должны быть уникальными. Я выдвинул изменения, чтобы сделать поле электронной почты неуникальным (я использую 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.

1 ответ

Могу поспорить, что "unique_users_email" на самом деле является именем уникального индекса, а не ограничением. Пытаться:

DROP INDEX "unique_users_email";

Недавние версии psql должны сообщать вам разницу между уникальным индексом и уникальным ограничением при взгляде на \d описание стола.

Другие вопросы по тегам