Това е текущото поведение на PostgreSQL. Уникалните индекси адресират дяла, а не таблицата като цяло. Имате няколко опции:
-
Ако изобщо е възможно, разделете вашите таблици, така че ключовите диапазони да са изключителни по някакъв начин. С други думи, разделяне на ключови данни. Това е най-лесният и безпроблемен подход. Тук разделяте върху неключови данни, което е проблем.
-
Ако това не работи, можете да добавите стойността на дяла към другата страна на съединението. Имайте предвид, че в този момент имате нужда от персонализирани тригери fkey.
-
Ако наистина имате нужда, можете да създадете поддържан от тригер материализиран изглед на всички идентификатори и да създадете уникален индекс за това.