繁体   English   中英

尝试更新 postgresql 上的列

[英]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 )

所以你有两个选择:

  1. 移除唯一约束
  2. 删除具有重复电子邮件地址的行

发布约束的数据、结构和创建脚本的列表可能有助于了解细节,但归根结底,您的DBA已指定电子邮件地址对于每一行都是唯一的,您不应试图规避这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM