[英]Trying to update column on postgresql
我正在尝试从另一个名为 fake_email 的 tmp 表更新我的表,但是当我运行以下命令时:
update users
SET email = fake_email2.email
FROM fake_email2
where users.id = fake_email2.id
我收到以下错误:
ERROR: duplicate key value violates unique constraint "index_users_on_email"
有没有办法更新它?
问题是您的users
表上有一个约束,它要求users
表中的所有行的电子邮件字段都是唯一的。
运行以下查询以定位与传入数据集匹配的当前行:
SELECT users.id, users.email, fake_email2.email, *
FROM users
INNER JOIN fake_email2 ON users.id = fake_email2.id
事实上,您可以使用此查询找到重复项:
SELECT users.id, users.email, fake_email2.email
FROM users
INNER JOIN fake_email2 ON users.id = fake_email2.id
WHERE EXISTS (SELECT u2.email FROM users as u2 where u2.Id <> users.Id AND u2.email = fake_email2.email )
所以你有两个选择:
发布约束的数据、结构和创建脚本的列表可能有助于了解细节,但归根结底,您的DBA已指定电子邮件地址对于每一行都是唯一的,您不应试图规避这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.