Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试更新postgresql上的列_Sql_Postgresql - Fatal编程技术网

正在尝试更新postgresql上的列

正在尝试更新postgresql上的列,sql,postgresql,Sql,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" 有办法更新它吗?问题是您的用户表有一个约束,要求

我正在尝试从另一个名为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"
有办法更新它吗?

问题是您的用户表有一个约束,要求电子邮件字段对于用户表中的所有行都是唯一的

运行以下查询以查找与传入数据集匹配的当前行:

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已指定每行的电子邮件地址都是唯一的,您不应该试图绕过这一点


电子邮件列上存在电子邮件存在约束。您不能这样做。您的假电子邮件2表中可能有重复项。检查您是否通过count*>1;的电子邮件从fake_email2组中选择电子邮件获得任何结果;。出现的电子邮件地址重复。首先,您需要解决电子邮件争用问题。fake_email2表行+fake_email2中不存在的现有用户的集合中不得有双精度。