Tôi có một bảng với chỉ mục UNIQUE 12 cột. \d sales
hiển thị sales_uq UNIQUE, btree (a1, a2, a3, ... a12)
.Chỉ số UNREQUE của PostgreSQL không phải là duy nhất?
tôi làm các truy vấn sau đây:
SELECT a1, a2, a3, ... a12 FROM sales GROUP BY a1, a2, a3, ... a12 HAVING count(1) > 1;
và tôi nhận được một loạt các kết quả. Làm thế nào là có thể ?! Có thể là chỉ mục ở đó nhưng bằng cách nào đó bị vô hiệu hóa? Hoặc có thể có một số vấn đề với NULLs? Hoặc với số dấu chấm động (hai cột trong chỉ mục là loại double precision
)?
Chết tiệt, điều này thật tệ. Tôi biết NULL là không bằng NULL, nhưng đối với một số lý do tôi đã mong nó sẽ khác nhau trong chỉ mục. :) – ibz
@ionut bizau - tất nhiên, niềm vui thực sự là, cho mục đích GROUPing, NULL được nhóm lại với nhau. Và như các trạng thái tài liệu, một số máy chủ khác (ví dụ: SQL Server) thực hiện các ràng buộc UNIQUE chỉ cho phép một NULL (mặc dù điều này vi phạm đặc tả SQL ANSI) –