Questo è il comportamento corrente di PostgreSQL. Gli indici univoci indirizzano la partizione, non la tabella nel suo insieme. Hai alcune opzioni:
-
Se possibile, partiziona le tabelle in modo che gli intervalli di chiavi siano in qualche modo esclusivi. In altre parole, partizionare i dati chiave. Questo è l'approccio più semplice e senza problemi. Qui stai partizionando su dati non chiave, il che è un problema.
-
Se ciò non funziona, puoi aggiungere il valore della partizione sull'altro lato del join. Nota che a questo punto hai bisogno di trigger fkey personalizzati.
-
Se ne hai davvero bisogno, puoi creare una vista materializzata mantenuta dal trigger di tutti gli ID e creare un indice univoco su questo.