sql >> データベース >  >> RDS >> PostgreSQL

除外制約`EXCLUDEUSING gist(c WITH &&)`はどういう意味ですか?

    一方、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を使用してください この制約を監視するためのインデックス」。




    1. 他のテーブルからテーブルの外部キーを設定する方法

    2. SQLServerヒープv.s.クラスター化されたインデックス

    3. 正規化または非正規化が機能するかどうかを判断できません

    4. PostgreSQL13でのUnicode正規化