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