Chociaż dokumentacja nie jest całkowicie jasna, stwierdza, że:
Jeśli polecenie INSERT zawiera klauzulę RETURNING, wynik będzie podobny do wyniku instrukcji SELECT zawierającej kolumny i wartości zdefiniowane na liście RETURNING, obliczone dla wierszy wstawionych przez polecenie.
Teraz "podobny do" nie jest niezawodną gwarancją i zgłosiłem to do dyskusji na liście dyskusyjnej ... ale w praktyce PostgreSQL nie będzie zadzierać z kolejnością wartości w RETURNING
. Jest mało prawdopodobne, że kiedykolwiek będziemy w stanie to zrobić, nawet jeśli chcemy optymalizować, ponieważ zbyt wiele aplikacji polega na tym, że są one uporządkowane tak samo jak dane wejściowe.
Czyli... dla INSERT INTO ... VALUES (...), (...), ... RETURNING ...
i dla INSERT INTO ... SELECT ... ORDER BY ... RETURNING ...
należy bezpiecznie założyć, że relacja wyniku jest w tej samej kolejności co dane wejściowe.