我想定义一个有约束的表。
数据是:“文章名,文章时间,开始时间,结束时间”
目前我使用这个条件:

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/

10-10 16:27