一方、CHECK
制約は、テーブルの単一行EXCLUDE
に基づいて式を評価します。 制約は、テーブル内の2つの行の比較を評価します。一般化されたUNIQUE
のように考えてください 制約:「2つの行を等しくすることはできません」の代わりに、「2つの行を重ねることはできません」、「2つの行を異なることはできません」などと言うことができます。 "。
可能な値のすべての組み合わせをチェックせずにこれを実現するには、行を挿入または更新するときに違反の可能性を見つけることができる適切なインデックス構造が必要です。これがgist
です 宣言の一部は、特定のタイプのインデックス> これは、平等以外の操作を高速化するために使用できます。
宣言の残りの部分は制約自体です:c
テストされている列であり、&&
行のどのペアに対してもtrueを返さない演算子です。この場合、&&
は「オーバーラップ」演算子です
つまり、制約EXCLUDE USING gist (c WITH &&)
「c
の2つの値はありません」と解釈されます 互いにオーバーラップする必要があります(より正確には、A.c && B.c
すべての個別の行に対してfalseまたはnullを返す必要がありますA
およびB
)、gist
を使用してください この制約を監視するためのインデックス」。