我想定义一个有约束的表。
数据是:“文章名,文章时间,开始时间,结束时间”
目前我使用这个条件:
EXCLUDE USING gist (article_name WITH =,
tsrange(start_time,end_time) WITH &&)
但这意味着不接受范围重叠的任何新行
有一个现有的范围与相同的子面板,而我想改变它得到:
不要在新的范围内使用新的行,在现有的范围内(StaskTime,EnthItTimes),
同一物品名称
我怎样才能申报呢?
谢谢
最佳答案
由于您不能使用<@
或@>
,我认为您需要一个带有smth的触发器
IF
(
SELECT count(1)
FROM table_name
WHERE article_name = NEW. article_name
AND NOT tsrange(NEW. start_time,NEW. end_time) <@ tsrange(start_time, end_time)
) < 1
THEN
return NEW;
END IF;
关于postgresql - PostgreSQL创建表条件排除tsrange中的一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43955865/