Christian Kruse: Zeitspannen + DB

Beitrag lesen

Hallo Steffen,

  1. Kann ich das irgendwie in der DB mit Contraints absichern?

Ja. Mit einem (relativ einfachen) BEFORE INSERT- bzw BEFORE UPDATE-Trigger.

(2) Wie kann ich möglichst effizient prüfen, dass es kein Überschneidungen gibt?

SELECT EXISTS(SELECT id FROM entries b WHERE a.start_date BETWEEN b.start_date AND b.end_date OR a.end_date BETWEEN b.start_date AND b.end_date);

Das EXITS() mit dem Subquery bricht bei der ersten gefundenen Stelle ab, es wird gar nicht erst ein grosses Result-Set gebildet und gibt ein BOOLEAN zurück.

LG,
CK