PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ist INSERT RETURNING garantiert, dass die Dinge in der richtigen Reihenfolge zurückgegeben werden?

Obwohl die Dokumentation nicht ganz klar ist, heißt es doch:

Wenn der INSERT-Befehl eine RETURNING-Klausel enthält, ähnelt das Ergebnis dem einer SELECT-Anweisung, die die in der RETURNING-Liste definierten Spalten und Werte enthält, berechnet über die vom Befehl eingefügte(n) Zeile(n).

Nun ist "ähnlich" keine eiserne Garantie, und ich habe dies auf der Mailingliste zur Diskussion gestellt ... aber in der Praxis wird PostgreSQL nicht mit der Reihenfolge der Werte in RETURNING herumspielen . Es ist unwahrscheinlich, dass wir das jemals schaffen werden, selbst wenn wir es aus Optimierungsgründen wollen, weil zu viele Apps darauf angewiesen sind, dass es genauso geordnet wird wie die Eingabe.

Also... für INSERT INTO ... VALUES (...), (...), ... RETURNING ... und für INSERT INTO ... SELECT ... ORDER BY ... RETURNING ... Es sollte davon ausgegangen werden, dass die Ergebnisbeziehung in der gleichen Reihenfolge wie die Eingabe ist.