sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur lägger man till en ny kolumn i en tabell efter den 2:a eller 3:e kolumnen i tabellen med postgres?

Nej, det finns inget direkt sätt att göra det på. Och det finns en anledning till det - varje fråga bör lista alla fält den behöver i vilken ordning (och format etc) den behöver dem, vilket gör ordningen på kolumnerna i en tabell obetydlig.

Om du verkligen behöver göra det kan jag komma på en lösning:

  • dumpa och spara beskrivningen av tabellen i fråga (med pg_dump --schema-only --table= ... )
  • lägg till kolumnen du vill ha den i den sparade definitionen
  • byt namn på tabellen i den sparade definitionen så att den inte kolliderar med namnet på den gamla tabellen när du försöker skapa den
  • skapa den nya tabellen med denna definition
  • fyll i den nya tabellen med data från den gamla tabellen med 'INSERT INTO VÄLJ fält1, fält2, , fält3,... FRÅN ';
  • byt namn på den gamla tabellen
  • byt namn på den nya tabellen till det ursprungliga namnet
  • Släpp så småningom den gamla, omdöpta tabellen efter att du kontrollerat att allt är okej


  1. Hur man bestämmer fältvärdet som inte kan konverteras till (decimal, float,int) i SQL Server

  2. Hur Cosh() fungerar i PostgreSQL

  3. Postgres - hur returnerar man rader med 0 antal för saknade data?

  4. Få maskinskrivna resultat från ActiveRecord rå SQL