无法在postgres中创建唯一索引,即使它不是

时间:2015-08-12 12:33:29

标签: postgresql

我为表创建了一个唯一索引并收到以下错误:

SQL error: ERROR: could not create unique index "unique_product" DETAIL: Key (mastercode)=() is duplicated

所以我运行一个查询来检查重复的记录,并且确实发现了一些重复的内容:

select * from product p where (select count(*) from product pp where pp.mastercode = p.mastercode) > 1

但即使在删除它们后我无法创建索引,它也显示相同的错误,并且检查重复项的查询没有显示任何内容。

看起来在删除重复项之后它没有更新索引,或类似的东西。我该如何解决这个问题?

更新 我忘记提及但可能很重要的东西,我已经在字段mastercode上有一个索引,这是一个默认索引(不是唯一的)。不知道这是否有事可做。

2 个答案:

答案 0 :(得分:5)

检查此查询的结果:

SELECT  mastercode, count(*)
FROM product
GROUP BY mastercode
HAVING count(*) > 1; -- not unique

答案 1 :(得分:1)

我相信你有一个空主码的实例,并试图插入另一个空主码。

尝试select * from product where mastercode is null;