dedlfix: Vernünftiger Aufbau/Abfragen für einen Belegungsplaner

Beitrag lesen

Hi!

Es bleibt trotzdem die Frage, wie man einen bedingten Insert aufbaut, damit der nur durchgeführt wird, wenn ein Select() _keinen_ Datensatz geliefert hat.

Nun, du kannst eine COUNT()-Subquery stellen, die schonmal die Information liefert, ob was überlappt oder nicht. Die beïnhaltet alle drei(/vier) erwähnten Bedingungen.

Bekommt man das mit http://dev.mysql.com/doc/refman/5.1/de/insert-select.html hin?

INSERT INTO table SELECT * FROM (SELECT anfang, ende, sonstige Daten) dummyAlias WHERE (count-Subquery) = 0

Ist etwas komplex, sollte aber gehen. Eine Alternative wären Transaktionen oder Locking. Wobei ich gerade feststelle, dass ich nicht weiß, ob Transaktionen atomar ablaufen. Ansonsten bleibt ja das Problem bestehen. Man könnte dann lediglich vor Abschluss der Transaktion noch einmal die Bedingung testen und gegebenenfalls ein Rollback anstoßen.

Lo!