Meskipun dokumentasinya tidak sepenuhnya jelas, ia menyatakan bahwa:
Jika perintah INSERT berisi klausa RETURNING, hasilnya akan mirip dengan pernyataan SELECT yang berisi kolom dan nilai yang ditentukan dalam daftar RETURNING, dihitung pada baris yang disisipkan oleh perintah.
Sekarang "mirip dengan" bukanlah jaminan yang ketat, dan saya telah mengangkat ini untuk diskusi di milis ... tetapi dalam praktiknya, PostgreSQL tidak akan mengacaukan urutan nilai di RETURNING
. Sepertinya kami tidak akan pernah dapat melakukannya meskipun kami ingin melakukan pengoptimalan, karena terlalu banyak aplikasi yang mengandalkannya untuk diurutkan sama seperti inputnya.
Jadi... untuk INSERT INTO ... VALUES (...), (...), ... RETURNING ...
dan untuk INSERT INTO ... SELECT ... ORDER BY ... RETURNING ...
seharusnya aman untuk mengasumsikan bahwa relasi hasil berada dalam urutan yang sama dengan input.