У меня есть таблица с индексом UNIQUE с 12 столбцами. \d sales
показывает sales_uq UNIQUE, btree (a1, a2, a3, ... a12)
.Индекс PostgreSQL UNIQUE не уникален?
я следующий запрос:
SELECT a1, a2, a3, ... a12 FROM sales GROUP BY a1, a2, a3, ... a12 HAVING count(1) > 1;
и я получаю кучу результатов. Как это возможно ?! Возможно ли, что индекс есть, но каким-то образом отключен? Или может возникнуть проблема с NULL? Или с номерами с плавающей запятой (два столбца индекса имеют тип double precision
)?
Черт, это отстой. Я знал, что NULL не равен NULL, но по какой-то причине я ожидал, что он будет отличаться от индекса. :) – ibz
@ionut bizau - конечно, настоящее удовольствие - то, что для целей GROUPing NULL группируются вместе. И, как указано в документации, некоторые другие серверы (например, SQL Server) реализуют ограничения UNIQUE, разрешая только один NULL (хотя это нарушает спецификацию ANSI SQL) –