Hoewel de documentatie niet helemaal duidelijk is, staat er wel dat:
Als het INSERT-commando een RETURNING-component bevat, is het resultaat vergelijkbaar met dat van een SELECT-statement dat de kolommen en waarden bevat die zijn gedefinieerd in de RETURNING-lijst, berekend over de rij(en) die door het commando zijn ingevoegd.
Nu is "vergelijkbaar met" geen ijzersterke garantie, en ik heb dit ter discussie gesteld op de mailinglijst ... maar in de praktijk zal PostgreSQL niet knoeien met de volgorde van waarden in RETURNING
. Het is onwaarschijnlijk dat we dat ooit zullen kunnen, zelfs als we dat willen voor optimalisatie, omdat te veel apps erop vertrouwen dat het hetzelfde wordt besteld als de invoer.
Dus... voor INSERT INTO ... VALUES (...), (...), ... RETURNING ...
en voor INSERT INTO ... SELECT ... ORDER BY ... RETURNING ...
het moet veilig zijn om aan te nemen dat de resultaatrelatie in dezelfde volgorde staat als de invoer.