2015-11-01 114 views
6

在PostgreSQL中,如何將範圍列上的排除約束與其他標量列上的唯一約束組合在一起。或者換句話說,我如何確保範圍重疊檢查只與其他列上的唯一檢查結合使用?將PostgreSQL EXCLUDE範圍約束與UNIQUE約束結合使用

例如,說我有:

CREATE TABLE reservation (
    restaurant_id int, 
    time_range tsrange 
); 

我想確保每個restaurant_id,沒有重疊time_range秒。

我知道我可以創建一個獨特的範圍約束是這樣的:

CREATE TABLE reservation (
    restaurant_id int, 
    time_range tsrange EXCLUDE USING gist (time_range WITH &&) 
); 

但是我怎麼確保該time_range檢查是通過restaurant_id作用域?

+0

這正是這個話題的討論:HTTP:// thoughts.davisjeff.com/2010/09/25/exclusion-constraints-are-generalized-sql-unique/。 –

回答