代码之家  ›  专栏  ›  技术社区  ›  ibz

PostgreSQL唯一索引不唯一?

  •  5
  • ibz  · 技术社区  · 16 年前

    \d sales 显示 sales_uq UNIQUE, btree (a1, a2, a3, ... a12)

    我执行以下查询:

    SELECT a1, a2, a3, ... a12 FROM sales GROUP BY a1, a2, a3, ... a12 HAVING count(1) > 1;
    

    double precision )?

    2 回复  |  直到 16 年前
        1
  •  12
  •   Damien_The_Unbeliever    16 年前

    因为两个空值的比较并不相等,所以它们玩具有唯一约束的有趣游戏。

    请参见中唯一约束的最后一段 PostgreSQL documentation :

    通常,唯一约束是 当有两个或两个以上 中包含的所有列 约束相等。然而,两个 空值被认为是不相等的 在这个比较中。这意味着即使在 可以存储重复的行 约束列之一。

        2
  •  2
  •   Frank Heikens    16 年前

    inexact ,这就是为什么会发生这种情况。使用精确的数据类型,您将不会遇到这样的问题。