PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

INSERT RETURNING é garantido para devolver as coisas na ordem correta?


Embora a documentação não seja totalmente clara, ela afirma que:

Se o comando INSERT contiver uma cláusula RETURNING, o resultado será semelhante ao de uma instrução SELECT contendo as colunas e valores definidos na lista RETURNING, calculados sobre a(s) linha(s) inserida(s) pelo comando.

Agora "semelhante a" não é uma garantia absoluta, e eu levantei isso para discussão na lista de discussão ... mas na prática, o PostgreSQL não vai mexer com a ordem dos valores em RETURNING . É improvável que consigamos, mesmo que queiramos, para otimização, porque muitos aplicativos dependem de ser ordenados da mesma forma que a entrada.

Então... para INSERT INTO ... VALUES (...), (...), ... RETURNING ... e para INSERT INTO ... SELECT ... ORDER BY ... RETURNING ... deve ser seguro assumir que a relação de resultado está na mesma ordem que a entrada.