ile birleştirin PostgreSQL'de, bir sütun sütununda bir dışlama kısıtlamasını diğer skaler sütunlarda benzersiz bir kısıtlama ile nasıl birleştirirsiniz. Ya da başka bir şekilde ifade etmek gerekirse, menzil çakışması kontrolünün yalnızca diğer bazı sütunlarda benzersiz bir kontrolle birlikte yapıldığından nasıl emin olabilirim? Örneğin Bir PostgreSQL EXCLUDE Aralık kısıtlamasını bir UNIQUE kısıtlaması
, ben olduğunu varsayalım:CREATE TABLE reservation (
restaurant_id int,
time_range tsrange
);
Her restaurant_id
için, hiçbir örtüşen time_range
ler olmadığından emin olmak istiyorum.
CREATE TABLE reservation (
restaurant_id int,
time_range tsrange EXCLUDE USING gist (time_range WITH &&)
);
Ama nasıl time_range
onay restaurant_id
tarafından kapsamlı olduğundan emin olabilirim? Eğer GİST endeksi, varsayılan olarak bir eşitlik operatörü olmadığı için uzantıyı btree_gist
yüklemeniz gerekir
tam olarak bu konunun bir tartışma thoughts.davisjeff.com/2010/09/25/exclusion-constraints-are-generalized-sql-unique/. –