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 回答