Unikke indekser i Postgres er baseret på værdier, der er lige , men NULL er aldrig lig med noget, inklusive andre NULL'er. Derfor er enhver række med en NULL deleted_at-værdi adskilt fra enhver anden mulig række - så du kan indsætte et hvilket som helst antal af dem.
En måde at undgå dette på er at oprette delvise indekser , anvender forskellige regler på rækker med og uden NULL:
CREATE UNIQUE INDEX ... ON subscriptions
(user_id, class_type_id) WHERE deleted_at IS NULL;
CREATE UNIQUE INDEX ... ON subscriptions
(user_id, class_type_id, deleted_at) WHERE deleted_at IS NOT NULL;