2017-05-13 5 views
1

私は制約付きのテーブルを定義したいと思います。
データである:Postgresql create table conditionはtsrangeの1列を除外します

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

が、その範囲は とをオーバーラップする任意の新しい行をとらないことを意味する:私はこの条件を使用一瞬「article_name、article_time、START_TIME、END_TIME」

同じ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; 
のようななめらかで、ここでトリガが必要だと思います
関連する問題