sql >> Database >  >> RDS >> PostgreSQL

Is INSERT RETURNING gegarandeerd om dingen in de juiste volgorde te retourneren?

Hoewel de documentatie niet helemaal duidelijk is, staat er wel dat:

Als het INSERT-commando een RETURNING-component bevat, is het resultaat vergelijkbaar met dat van een SELECT-statement dat de kolommen en waarden bevat die zijn gedefinieerd in de RETURNING-lijst, berekend over de rij(en) die door het commando zijn ingevoegd.

Nu is "vergelijkbaar met" geen ijzersterke garantie, en ik heb dit ter discussie gesteld op de mailinglijst ... maar in de praktijk zal PostgreSQL niet knoeien met de volgorde van waarden in RETURNING . Het is onwaarschijnlijk dat we dat ooit zullen kunnen, zelfs als we dat willen voor optimalisatie, omdat te veel apps erop vertrouwen dat het hetzelfde wordt besteld als de invoer.

Dus... voor INSERT INTO ... VALUES (...), (...), ... RETURNING ... en voor INSERT INTO ... SELECT ... ORDER BY ... RETURNING ... het moet veilig zijn om aan te nemen dat de resultaatrelatie in dezelfde volgorde staat als de invoer.



  1. Hoe kan ik het trage querylogboek van MySQL inschakelen zonder MySQL opnieuw te starten?

  2. Top open source-tools voor PostgreSQL-migraties

  3. Moet ik !=of ​​<> gebruiken voor niet gelijk in T-SQL?

  4. Sla PL/pgSQL-uitvoer van PostgreSQL op in een CSV-bestand