Det grundläggande problemet med angränsande listor är att det inte finns något allmänt sätt i SQL att extrahera ett helt underträd, så du har redan problem med att identifiera alla rader du behöver duplicera utan att använda en markör.
Om möjligt migrera din närliggande lista till en kapslad uppsättningsmodell som gör att du enkelt kan identifiera alla noder i ett underträd. Men underhållet av en kapslad uppsättningsmodell är mer komplext för allmänna infogningar och borttagningar.
EDIT:Som påpekats av 'a_häst_med_inget_namn' finns ett sätt i allmän SQL att bearbeta listor över angränsande tabeller, rekursiva vanliga tabelluttryck.