PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

INSERT RETURNING est-il garanti de retourner les choses dans le bon ordre ?

Bien que la documentation ne soit pas tout à fait claire, elle indique que :

Si la commande INSERT contient une clause RETURNING, le résultat sera similaire à celui d'une instruction SELECT contenant les colonnes et les valeurs définies dans la liste RETURNING, calculées sur la ou les lignes insérées par la commande.

Maintenant, "similaire à" n'est pas une garantie à toute épreuve, et j'ai soulevé cela pour discussion sur la liste de diffusion ... mais en pratique, PostgreSQL ne dérangera pas l'ordre des valeurs dans RETURNING . Il est peu probable que nous puissions jamais le faire, même si nous le voulons pour l'optimisation, car trop d'applications comptent sur le fait qu'il soit ordonné de la même manière que l'entrée.

Donc... pour INSERT INTO ... VALUES (...), (...), ... RETURNING ... et pour INSERT INTO ... SELECT ... ORDER BY ... RETURNING ... il devrait être sûr de supposer que la relation de résultat est dans le même ordre que l'entrée.