Si está utilizando SQL Server 2005 o superior, puede utilizar consultas recursivas para obtener su información. Aquí hay un ejemplo:
With tree (id, Name, ParentID, [level])
As (
Select id, Name, ParentID, 1
From [myTable]
Where ParentID = 0
Union All
Select child.id
,child.Name
,child.ParentID
,parent.[level] + 1 As [level]
From [myTable] As [child]
Inner Join [tree] As [parent]
On [child].ParentID = [parent].id)
Select * From [tree];
Esta consulta devolverá la fila solicitada por la primera parte (Donde ParentID =0) y todas las subfilas recursivamente. ¿Esto te ayuda?
No estoy seguro de entender lo que quiere que suceda con su inserto. ¿Puede proporcionar más información en términos del resultado esperado cuando haya terminado?
¡Buena suerte!