これはPostgreSQLの現在の動作です。一意のインデックスは、テーブル全体ではなく、パーティションをアドレス指定します。いくつかのオプションがあります:
-
可能であれば、キー範囲が何らかの方法で排他的になるようにテーブルを分割します。つまり、キーデータを分割します。これは最も簡単で、最も手間のかからないアプローチです。ここでは、問題となる重要でないデータを分割しています。
-
それが機能しない場合は、結合の反対側にパーティション値を追加できます。この時点で、カスタムfkeyトリガーが必要であることに注意してください。
-
本当に必要な場合は、すべてのIDのトリガーで維持されるマテリアライズド・ビューを作成し、その上に一意のインデックスを作成できます。