В то время как CHECK
ограничение вычисляет выражение , основываясь на одной строке таблицы, EXCLUDE
ограничение оценивает сравнение двух строк в таблице. Думайте об этом как обобщенного UNIQUE
ограничения: вместо «две строки не могут быть равны», вы можете сказать что - то вроде «две строки не пересекаются», или даже «две строки не могут быть разными ».
Для того , чтобы достичь этого , не проверив все возможные комбинации значений, она нуждается в соответствующую структуру индекса , которая позволяет ему найти возможные нарушения при вставке или обновлении строки. Это то , что gist
часть заявления относится к: определенному типу индекса , который может быть использован для ускорения , кроме равенства операций.
Остальная часть декларации является само ограничение: c
это столбец проверяется, и &&
оператор , который не должен возвращать верно для любой пары строк. В этом случае, &&
является «перекрывается» оператор , как указано на странице руководства геометрических операторов .
Так , вместе взятое, ограничение EXCLUDE USING gist (c WITH &&)
переводится не «никаких два значения c
должно накладываться друг на друг (точнее, A.c && B.c
должен возвращать ложным или нуль для всех отдельных строк A
и B
), и , пожалуйста , используйте gist
индекс для мониторинга этого ограничения».