script42
Benutzer
- Beiträge
- 7
Hallo!
Ich habe zwei Tabellen: tbl_Familienfotozeiten (id, auftragsnr, datum, von, bis) und tbl_Familienfotos (id, ffz_id, zeit, familienname).
Wenn in die erste ein Datensatz eingefügt wird (AFTER INSERT), soll in der zweiten für jede 5-Minuten-Einheit zwischen von und bis ein Datensatz eingefügt werden. (Also z.B. von: 10:00, bis: 12:00, dann müssten in der Tabelle tbl_Familienfotos 24 Zeilen(Timeslots) erstellt werden mit den Werten: 10:00, 10:05, 10:10, ...11:55 in der Spalte Zeit.)
Dafür habe ich den folgenden Trigger erstellt:
DROP TRIGGER IF EXISTS slots_familienfotos;
DELIMITER $$
CREATE TRIGGER slots_familienfotos
AFTER INSERT
ON tbl_Familienfotozeiten FOR EACH ROW
BEGIN
SET @von = new.von;
WHILE @von < new.bis DO
INSERT INTO tbl_Familienfotos (ffz_id, zeit, familienname)
VALUES(new.id, @von, NULL);
SET @von = DATE_ADD(@von, INTERVAL 5 minute);
END WHILE;
END$$
DELIMITER ;
Doch inserted er mir leider nur jeweils eine Zeile (in diesem Fall diejenige mit dem Wert 10:00) statt mehrere.
Kann mir jemand sagen, wo mein Fehler liegt?
(Die Spalten von, bis und zeit sind übrigens TIME-Spalten, falls das etwas weiterhilft.)
Herzliche Grüße
Kerstin
Ich habe zwei Tabellen: tbl_Familienfotozeiten (id, auftragsnr, datum, von, bis) und tbl_Familienfotos (id, ffz_id, zeit, familienname).
Wenn in die erste ein Datensatz eingefügt wird (AFTER INSERT), soll in der zweiten für jede 5-Minuten-Einheit zwischen von und bis ein Datensatz eingefügt werden. (Also z.B. von: 10:00, bis: 12:00, dann müssten in der Tabelle tbl_Familienfotos 24 Zeilen(Timeslots) erstellt werden mit den Werten: 10:00, 10:05, 10:10, ...11:55 in der Spalte Zeit.)
Dafür habe ich den folgenden Trigger erstellt:
DROP TRIGGER IF EXISTS slots_familienfotos;
DELIMITER $$
CREATE TRIGGER slots_familienfotos
AFTER INSERT
ON tbl_Familienfotozeiten FOR EACH ROW
BEGIN
SET @von = new.von;
WHILE @von < new.bis DO
INSERT INTO tbl_Familienfotos (ffz_id, zeit, familienname)
VALUES(new.id, @von, NULL);
SET @von = DATE_ADD(@von, INTERVAL 5 minute);
END WHILE;
END$$
DELIMITER ;
Doch inserted er mir leider nur jeweils eine Zeile (in diesem Fall diejenige mit dem Wert 10:00) statt mehrere.
Kann mir jemand sagen, wo mein Fehler liegt?
(Die Spalten von, bis und zeit sind übrigens TIME-Spalten, falls das etwas weiterhilft.)
Herzliche Grüße
Kerstin