MySQL 5.5.8 Procedure zum Kopieren von einem Rekursiven Template

Vandroiy

Mitglied
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.
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;
Hier ist eigentlich das wichtigste die Berechnung der neuen id_p.
Code:
(id_p - i_root_id) + var_max + 1
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.
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.
 

Neue Beiträge

Zurück