sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan tilføjer man en ny kolonne i en tabel efter 2. eller 3. kolonne i tabellen ved hjælp af postgres?

Nej, der er ingen direkte måde at gøre det på. Og der er en grund til det - hver forespørgsel skal angive alle de felter, den har brug for, i hvilken som helst rækkefølge (og format osv.), den har brug for dem, og dermed gøre rækkefølgen af ​​kolonnerne i én tabel ubetydelig.

Hvis du virkelig har brug for at gøre det, kan jeg komme i tanke om en løsning:

  • dump og gem beskrivelsen af ​​den pågældende tabel (ved hjælp af pg_dump --schema-only --table= ... )
  • tilføj den ønskede kolonne, hvor du vil have den i den gemte definition
  • omdøb tabellen i den gemte definition for ikke at kollidere med navnet på den gamle tabel, når du forsøger at oprette den
  • opret den nye tabel ved hjælp af denne definition
  • udfyld den nye tabel med data fra den gamle tabel ved hjælp af 'INSERT INTO VÆLG felt1, felt2, , felt3,... FRA ';
  • omdøb den gamle tabel
  • omdøb den nye tabel til det oprindelige navn
  • slip til sidst den gamle, omdøbte tabel, når du har sikret dig, at alt er i orden


  1. Eksempel på SQL Servers sys.dm_sql_referenced_entities() Returnerer en enhed, der refererer til en linket server

  2. Introduktion til auto_explain:Sådan logger du automatisk langsomme Postgres-forespørgselsplaner

  3. PostgreSQL fuldtekstsøgning og trigramforvirring

  4. MySQL ATAN2() Funktion – Returner buetangenten af ​​2 værdier