check for overlapping time intervals

Поиск
Список
Период
Сортировка
От Wolfgang Meiners
Тема check for overlapping time intervals
Дата
Msg-id kl32r0$850$1@ger.gmane.org
обсуждение исходный текст
Ответы Re: check for overlapping time intervals  (Thomas Kellerer <spam_eater@gmx.net>)
Список pgsql-sql
Hi,

I am on postgresql 9.1 and use at table like

CREATE TABLE timetable(tid   INTEGER PRIMARY KEY,gid   INTEGER REFERENCES groups(gid),day   DATE,s     TIME NOT NULL,
---starte     TIME NOT NULL, --- endCHECK (e > s));
 

Now, i need a constraint to prevent overlapping timeintervals in this
table. For this, i use a trigger:

CREATE OR REPLACE FUNCTION validate_timetable() RETURNS trigger AS $$
BEGINIF TG_OP = 'INSERT' THEN IF EXISTS(  SELECT * FROM timetable  WHERE gid = NEW.gid AND day = NEW.day  AND s < NEW.e
ANDe > NEW.s)  THEN   RAISE EXCEPTION 'overlapping intervals';  END IF;ELSIF TG_OP = 'UPDATE' THEN IF EXISTS(  SELECT *
FROMtimetable  WHERE gid = NEW.gid AND day = NEW.day  AND tid <> OLD. tid  AND s < NEW.e AND e > NEW.s)  THEN   RAISE
EXCEPTION'overlapping intervals';  END IF;END IF;RETURN NEW;
 
END; $$ LANGUAGE plpgsql;

CREATE TRIGGER validate_timetable
BEFORE INSERT OR UPDATE ON timetable
FOR EACH ROW EXECUTE PROCEDURE
validate_timetable();

Is there a simpler way to check for overlapping timeintervals? I ask
this question, because i have more similar tables with similar layout
and would have to write similar functions again and again.

Thank you for any hints
Wolfgang




В списке pgsql-sql по дате отправления:

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: Re: [SQL] Table indexes in a SELECT with JOIN´s
Следующее
От: Thomas Kellerer
Дата:
Сообщение: Re: check for overlapping time intervals