Este es el comportamiento actual de PostgreSQL. Los índices únicos se refieren a la partición, no a la tabla como un todo. Tienes algunas opciones:
-
Si es posible, divida sus tablas para que los rangos de claves sean exclusivos de alguna manera. En otras palabras, partición en datos clave. Este es el enfoque más fácil y sin complicaciones. Aquí está particionando datos que no son clave, lo cual es un problema.
-
Si eso no funciona, puede agregar el valor de la partición al otro lado de la unión. Tenga en cuenta que en este punto necesita activadores de tecla f personalizados.
-
Si realmente lo necesita, puede crear una vista materializada mantenida por disparador de todas las identificaciones y crear un índice único en eso.