Postgresql创建表条件在tsrange中排除一列

Postgresql创建表条件在tsrange中排除一列,postgresql,conditional-statements,create-table,Postgresql,Conditional Statements,Create Table,我想定义一个带有约束的表。 数据为:文章名称、文章时间、开始时间、结束时间 目前我使用此条件: EXCLUDE USING gist (article_name WITH =, tsrange(start_time,end_time) WITH &&) 但这意味着不获取范围重叠的任何新行 使用具有相同项目名称的现有范围,而我希望将其更改为: 不获取文章时间在现有范围内的新行开始时间、结束时间、, 同一物品的名称 请问我怎么申报? 非常感谢由于您不能使用,

我想定义一个带有约束的表。 数据为:文章名称、文章时间、开始时间、结束时间

目前我使用此条件:

EXCLUDE USING gist (article_name WITH =,
            tsrange(start_time,end_time) WITH &&)
但这意味着不获取范围重叠的任何新行 使用具有相同项目名称的现有范围,而我希望将其更改为:

不获取文章时间在现有范围内的新行开始时间、结束时间、, 同一物品的名称

请问我怎么申报?
非常感谢

由于您不能使用,我想您需要一个类似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; 

由于你不能使用,我想你需要一个类似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;