Currently I am using the overlaps operator so that users can't insert dates that overlap. I created this function:
CREATE OR REPLACE FUNCTION overlap(docent_medewerkerscode1 CHARACTER(7), lokaal1 TEXT, groep_groepsnaam1 TEXT, startdatum1 timestamp, einddatum1 timestamp) RETURNS TEXT AS $$ DECLARE resultaat TEXT; rec rooster%rowtype; BEGIN FOR rec IN SELECT groep_groepsnaam = groep_groepsnaam1 OR lokaal = lokaal1 OR docent_medewerkerscode = docent_medewerkerscode1 FROM rooster LOOP IF(startdatum1, einddatum1) OVERLAPS (startdatum, einddatum) FROM rooster THEN --IF startdatum1 BETWEEN startdatum AND einddatum AND einddatum1 BETWEEN startdatum AND einddatum FROM rooster THEN resultaat = 'tijd overlapt'; RAISE 'Niet mogelijk tijd komt overeen met ingeplande tijd'; END IF; END LOOP; RETURN resultaat; END; $$ LANGUAGE plpgsql; The problem is that the overlap doesn't work on multiples rows.
(ERROR: query "SELECT (startdatum1, einddatum1) OVERLAPS (startdatum, einddatum) FROM rooster" returned more than one row)
I am looking for a way that let's the overlap check each row from the select query. Any of you guys that have an idea of what I can do?