Även om dokumentationen inte är helt tydlig, står det att:
Om kommandot INSERT innehåller en RETURNING-sats, kommer resultatet att likna det för en SELECT-sats som innehåller kolumner och värden som definieras i RETURNING-listan, beräknade över rad(er) som infogats av kommandot.
Nu är "liknande" inte en järnklädd garanti, och jag har tagit upp detta för diskussion på e-postlistan ... men i praktiken kommer PostgreSQL inte att bråka med ordningen på värden i RETURNING
. Det är osannolikt att vi någonsin kommer att kunna göra det även om vi vill för optimering, eftersom för många appar är beroende av att den beställs på samma sätt som indata.
Så... för INSERT INTO ... VALUES (...), (...), ... RETURNING ...
och för INSERT INTO ... SELECT ... ORDER BY ... RETURNING ...
det bör vara säkert att anta att resultatrelationen är i samma ordning som indata.