Obwohl die Dokumentation nicht ganz klar ist, heißt es doch:
Wenn der INSERT-Befehl eine RETURNING-Klausel enthält, ähnelt das Ergebnis dem einer SELECT-Anweisung, die die in der RETURNING-Liste definierten Spalten und Werte enthält, berechnet über die vom Befehl eingefügte(n) Zeile(n).
Nun ist "ähnlich" keine eiserne Garantie, und ich habe dies auf der Mailingliste zur Diskussion gestellt ... aber in der Praxis wird PostgreSQL nicht mit der Reihenfolge der Werte in RETURNING
herumspielen . Es ist unwahrscheinlich, dass wir das jemals schaffen werden, selbst wenn wir es aus Optimierungsgründen wollen, weil zu viele Apps darauf angewiesen sind, dass es genauso geordnet wird wie die Eingabe.
Also... für INSERT INTO ... VALUES (...), (...), ... RETURNING ...
und für INSERT INTO ... SELECT ... ORDER BY ... RETURNING ...
Es sollte davon ausgegangen werden, dass die Ergebnisbeziehung in der gleichen Reihenfolge wie die Eingabe ist.