mysql Bestandstabelle aktualisieren

wayne95

Grünschnabel
Hallo zusammen,

ich habe eine tabelle "kassenbon" und eine tabelle "bestand". In Kassenbon trage ich sämtliche Einkäufe ein. Um den Bestand aktuell zu halten, startet ein trigger um die Menge aus Kassenbon in die tabelle bestand zu übertragen. Wenn ich nun z.B. n neue Artikel in Kassenbon eintrage, wird der erste eingetragene Artikel n mal in Bestand geschrieben und der rest n-1,n-2 usw. Folgenden trigger habe ich verwendet:#

delimiter @@
create procedure abgleich()
begin
declare i int;
declare x int;
declare z int;
set i=0;
set x=(Select max(einkauf_id) as menge from kassenbon);
set z=(select count(einkauf_id) as anzahl from kassenbon where einkauf_id=(select max(einkauf_id) as m from kassenbon));
myloop: REPEAT
update bestand
set bestand.menge=bestand.menge+kassenbon.menge
where bestand.artikel=kassenbon.artikel_id and kassenbon.einkauf_id=x;
set i=i+1;
UNTIL i>=z
END REPEAT;
End;
@@
DELIMITER ;

Irgenwas läuft schief mit der Schleife.
ich danke im Voraus für Verbesserungen

wayne
 
SQL Code bitte in [code=sql] Code-Tags Speichern.

Ist schon später aber evtl. triffs das ... gn8
SQL:
CREATE TRIGGER `kassenbon_insert` AFTER INSERT ON `kassenbon`
    SET @x = (SELECT max(`einkauf_id`) as `menge` FROM `kassenbon`);
    SET @z = (SELECT count(`einkauf_id`) as `anzahl` FROM `kassenbon` WHERE einkauf_id=@x);
    FOR EACH ROW
        BEGIN
            UPDATE 
                `bestand`
            SET 
                `bestand`.`menge`=`bestand`.`menge`+`kassenbon`.`menge`
            WHERE 
                `bestand`.`artikel`=`kassenbon`.`artikel_id` 
            AND 
                `kassenbon`.`einkauf_id`=@x;
        END;
 
Zuletzt bearbeitet:
Zurück