PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

INSERT RETURNING è garantito per restituire le cose nell'ordine giusto?

Sebbene la documentazione non sia del tutto chiara, afferma che:

Se il comando INSERT contiene una clausola RETURNING, il risultato sarà simile a quello di un'istruzione SELECT contenente le colonne ei valori definiti nell'elenco RETURNING, calcolato sulla riga/e inserita/e dal comando.

Ora "simile a" non è una garanzia ferrea, e l'ho sollevato per la discussione sulla mailing list ... ma in pratica, PostgreSQL non pasticcerà con l'ordine dei valori in RETURNING . È improbabile che saremo mai in grado di farlo anche se lo desideriamo per l'ottimizzazione, perché troppe app fanno affidamento sul fatto che venga ordinato lo stesso dell'input.

Quindi... per INSERT INTO ... VALUES (...), (...), ... RETURNING ... e per INSERT INTO ... SELECT ... ORDER BY ... RETURNING ... dovrebbe essere sicuro presumere che la relazione del risultato sia nello stesso ordine dell'input.