Se você estiver usando o SQL Server 2005 ou superior, poderá usar consultas recursivas para obter suas informações. Aqui está um exemplo:
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];
Essa consulta retornará a linha solicitada pela primeira parte (Onde ParentID =0) e todas as sublinhas recursivamente. Isso ajuda você?
Não tenho certeza se entendi o que você quer que aconteça com sua inserção. Você pode fornecer mais informações em termos do resultado esperado quando terminar?
Boa sorte!