Se si utilizza SQL Server 2005 o versioni successive, è possibile utilizzare query ricorsive per ottenere le informazioni. Ecco un esempio:
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];
Questa query restituirà la riga richiesta dalla prima parte (Where ParentID =0) e tutte le sottorighe in modo ricorsivo. Questo ti aiuta?
Non sono sicuro di aver capito cosa vuoi che accada con il tuo inserto. Puoi fornire maggiori informazioni in termini di risultato atteso quando avrai finito?
Buona fortuna!