Přestože dokumentace není zcela jasná, uvádí, že:
Pokud příkaz INSERT obsahuje klauzuli RETURNING, bude výsledek podobný jako u příkazu SELECT obsahujícího sloupce a hodnoty definované v seznamu RETURNING, vypočítané přes řádky vložené příkazem.
Nyní "podobné" není pevná záruka a vznesl jsem to k diskusi na mailing listu ... ale v praxi se PostgreSQL nebude zahrávat s pořadím hodnot v RETURNING
. Je nepravděpodobné, že to někdy budeme moci, i když to budeme chtít kvůli optimalizaci, protože příliš mnoho aplikací spoléhá na to, že budou objednány stejně jako vstup.
Takže... pro INSERT INTO ... VALUES (...), (...), ... RETURNING ...
a pro INSERT INTO ... SELECT ... ORDER BY ... RETURNING ...
mělo by být bezpečné předpokládat, že výsledná relace je ve stejném pořadí jako vstup.