2017-05-13 10 views
1

제약 조건이있는 테이블을 정의하려고합니다. 나는이 상태 사용 "ARTICLE_NAME, article_time, START_TIME, END_TIME"순간에 대한PostgreSQL create table 조건이 tsrange의 한 열을 제외합니다.

:
데이터는

EXCLUDE USING gist (article_name WITH =, 
      tsrange(start_time,end_time) WITH &&) 

를하지만 그 범위와 겹치는하는 새로운 행을하지 의미 같은 ARTICLE_NAME의 기존 범위, 내가 얻을 수를 변경하려는 반면 :

article_time이 같은 ARTICLE_NAME에 대한 기존의 범위 (START_TIME, END_TIME), 안에있는 새 행을하지 않는

어떻게 신고 할 수 있습니까? 때문에 당신이 <@ 또는 @>를 사용할 수 없다는 사실에 덕분에 많은

답변

0

, 난 당신이

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; 
같은 떨어지게 여기 트리거를 필요가 있다고 생각