我的 postgresql 9.0 db 中有一个基于函数的唯一索引。我还没有通过我尝试的任何手动测试使其失败,但是当我查询它时,我在数据库中看到了一些重复项。
看一下这个:
Index: "users_screen_name_idx" UNIQUE, btree (lower(screen_name::text))
# select lower(screen_name), count(1) from users group by lower(screen_name) having count(1) > 1;
lower | count
---------------+-------
xxx xxx 3735 | 2
xxx xxx 37383 | 2
... (36 more) ...
| 17254
(39 rows)
任何想法这是如何发生的?我知道 NULL 不是唯一的,这不是问题,而是其他 38 行。