Hallo Community,
ich hab ein Problem das meine Theorie mit der Praxis nicht übereinstimmt und würde mich freuen wenn ihr mir dabei etwas helfen könnt.
So sieht meine Template_Lager Tabelle aus, mit dieser Tabelle kann ich mehrere Templates anlegen und möchte z.B. dieses Lager öfters Anlegen und in die Lager Tabelle kopieren.
Hierfür habe ich mir eine Procedure geschrieben die folgendes macht.
Hier ist eigentlich das wichtigste die Berechnung der neuen id_p.
Das ganze habe ich als Beispiel in Excel Eingetragen und mir somit die neuen id_p ausrechnen lassen, was natürlich super Funktioniert hat.
Und jetzt kommt ihr ins Spiel, denn wenn ich das ganze in mysql mit der Procedure ausführe ändert er Aufeinmal das Auto_Increment nach der Procedure und setzt es auf einem höhren beliebigen Wert und somit funktioniert mein var_max nicht mehr. Wieso macht er das?
Jedenfalls so sieht meine Tabelle nach der Procedure aus.
Danke für eure Hilfe.
ich hab ein Problem das meine Theorie mit der Praxis nicht übereinstimmt und würde mich freuen wenn ihr mir dabei etwas helfen könnt.
So sieht meine Template_Lager Tabelle aus, mit dieser Tabelle kann ich mehrere Templates anlegen und möchte z.B. dieses Lager öfters Anlegen und in die Lager Tabelle kopieren.
Code:
id | id_p | root | lft | rgt | Name | Typ
4131 0 1 1 14 Lager A 1
4132 4131 1 2 13 Fach A 2
4133 4132 1 3 8 Ebene A 3
4134 4133 1 4 5 Box A 4
4135 4133 1 6 7 Box B 4
4136 4132 1 9 12 Ebene B 3
4137 4136 1 10 11 Box A 4
Hierfür habe ich mir eine Procedure geschrieben die folgendes macht.
Code:
SELECT max(id) into var_max
FROM Lager;
INSERT INTO Lager
( id_p,Name, Type)
SELECT
if(id_p != 0,(id_p - i_root_id) + var_max + 1,0),
Name,
Typ
FROM template_lager as search, template_lager as sets
WHERE
search.id = i_root_id AND
search.root_id = sets.root_id
ORDER BY sets.lft;
COMMIT;
Code:
(id_p - i_root_id) + var_max + 1
Und jetzt kommt ihr ins Spiel, denn wenn ich das ganze in mysql mit der Procedure ausführe ändert er Aufeinmal das Auto_Increment nach der Procedure und setzt es auf einem höhren beliebigen Wert und somit funktioniert mein var_max nicht mehr. Wieso macht er das?
Jedenfalls so sieht meine Tabelle nach der Procedure aus.
Code:
id | id_p | root | lft | rgt | Name | Typ
5369 5000 2 4999 5000 Box A 4 -- letzter Eintrag in der Tabelle Lager
5374 0 3 1 14 Lager A 1
5375 5370 3 2 13 Fach A 2
5376 5371 3 3 8 Ebene A 3
5377 5372 3 4 5 Box A 4
5378 5372 3 6 7 Box B 4
5379 5371 3 9 12 Ebene B 3
5380 5375 3 10 11 Box A 4
Danke für eure Hilfe.