Tout d'abord,
insert into mutate (x, y)
select x + 1, y + 1
from mutate;
Ne démarre pas une boucle infinie, car la requête ne verra pas les données qui ont été insérées - uniquement les données qui existaient au début de l'instruction. Les nouvelles lignes ne seront visibles que pour les instructions suivantes.
Ceci l'explique assez bien :