Ich würde den Baum 1:1 kopieren und das AutoInc für den Kopiervorgang ausschalten.
So einfach ist das nicht.
Ausser der
id muss auch bei jedem Datensatz die
parent_id geändert werden.
Ich würde die Aufgabe mit Delphi in einer rekursiven Funktion lösen.
Delphi-Quellcode:
// kopiert einen Datensatz mit einer best. id und liefert die neue id zurück
function CopySingleNode(id, new_parent_id:integer):integer;
// liefert eine Liste mit alle Kindern zu einer bestimmten parent_id
procedure GetChildrenList(parent_id:integer; list:TIntegerList);
// kopiert rekursiv einen ganzen Zweig und hängt ihn unter parent_id ein
procedure CopyTree(id, parent_id:integer);
begin
parent_id := CopySingleNode(id, parent_id);
GetChildrenList(id, list);
foreach x in list do
CopyTree(x, parent_id); // rekursiver Aufruf
end;