Il problema fondamentale con gli elenchi di adiacenza è che non esiste un modo generale in SQL per estrarre un intero sottoalbero, quindi hai già il problema di identificare tutte le righe che devi duplicare senza ricorrere a un cursore.
Se possibile, migra il tuo elenco di adiacenze a un modello di set nidificato che ti consente di identificare facilmente tutti i nodi di un sottoalbero. Tuttavia, la manutenzione di un modello di insiemi nidificati è più complessa per inserimenti ed eliminazioni generali.
EDIT:come sottolineato da 'a_horse_with_no_name', è un modo in generale SQL per elaborare elenchi di adiacenza, espressioni di tabelle comuni ricorsive.