In primo luogo,
insert into mutate (x, y)
select x + 1, y + 1
from mutate;
Non avvia un ciclo infinito, perché la query non vedrà i dati inseriti, solo i dati esistenti all'inizio dell'istruzione. Le nuove righe saranno visibili solo alle istruzioni successive.
Questo lo spiega abbastanza bene: