L'utilisation d'un ORDER BY
dans un INSERT SELECT
n'est pas inutile tant qu'il peut changer le contenu des données insérées, c'est-à-dire avec une séquence NEXTVAL
inclus dans le SELECT
clause. Et ceci même si les lignes insérées ne seront pas triées lors de la récupération - c'est le rôle de votre ORDER BY
clause dans votre SELECT
clause lors de l'accès aux lignes.
Pour un tel objectif, vous pouvez utiliser une solution de contournement en plaçant votre ORDER BY
clause dans une sous-requête , et ça marche :
INSERT INTO myTargetTable
(
SELECT mySequence.nextval, sq.* FROM
( SELECT f1, f2, f3, ...fx
FROM mySourceTable
WHERE myCondition
ORDER BY mySortClause
) sq
)