sql - 删除唯一约束时遇到问题

标签 sql postgresql

在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.

最佳答案

我敢打赌,“unique_users_email”实际上是唯一索引 的名称,而不是约束。尝试:

DROP INDEX "unique_users_email";

在查看表的 \d 描述时,最新版本的 psql 应该会告诉您唯一索引和唯一约束之间的区别。

关于sql - 删除唯一约束时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12922500/

相关文章:

sql - 在联合表中搜索

java - Java同时访问两个单选按钮

sql - 数千列的动态枢轴

通过连接改进 SQL 子选择?

postgresql - 如何为 python Bitbucket Pipeline 设置 Postgres 数据库架构

SQL:如何使用约束强制执行函数依赖?

sql - 在 SQL View 中将地址列拆分为单独的列

mysql - 将表连接到自身?您能否建议一个最快的查询来获取这些结果?

database - 如何在 postgres 中将时区永久更改为 UTC?

仅限制记录子集的 SQL 查询