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
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