Hallo zusammen
Folgendes problem:
2 Tabellen:
auftrag
id|totalMannStunden|totalMaschinenStunden
buchung
id|effMannStunden|effMaschinenStunden|auftrag_id
z.B Auftrag: Holztisch
id|istMannStunden|istMaschinenStunden 1 | 0 | 0
Nun kommt eine Buchung hinzu, ausgelöst durch ein Formular einer Webapplikation
Buchung
id|effektivMannStunden |effektivMaschinenStunden|auftrag_id 1 | 2.5 | 2.5|1
Jetzt soll über einen Trigger die Tabelle Auftrag upgedatet werden... Bei dem 1. Datensatz geht es, wenn ich jedoch einen 2. Datensatz (Auftrag) hinzufüge und dort einen Rapport verbuche, passiert nix...
Trigger:
DROP TRIGGER IF EXISTS rts.tri_buchung_after_insert;
DELIMITER //
CREATE TRIGGER tri_buchung_after_insert
AFTER insert
ON buchung
FOR EACH ROW
BEGIN
UPDATE auftrag
SET auftrag.istMannstunden = (new.effektivMannStunden + auftrag.istMannstunden), auftrag.istMaschinenStunden = (new.effektivMaschinenStunden + auftrag.istMaschinenStunden)
WHERE new.auftrag_id = auftrag.id;
END//
DELIMITER ;
Auch so hab ich es versucht, jedoch löscht er alle istStunden bei den anderen Aufträgen und updatet nur den aktuellen:
DROP TRIGGER IF EXISTS rts.tri_buchung_after_insert;
DELIMITER //
CREATE TRIGGER tri_buchung_after_insert
AFTER update
ON buchung
FOR EACH ROW
BEGIN
UPDATE auftrag
SET auftrag.istMannStunden = (select sum(effektivMannStunden) from buchung where new.`auftrag_id` = auftrag.id), -- new.`effektivMannStunden` + auftrag.istMannstunden
auftrag.istMaschinenStunden = (select sum(effektivMaschinenStunden) from buchung where new.`auftrag_id` = auftrag.id);
END//
DELIMITER ;
Danke für eure Hilfe