sql >> Database >  >> RDS >> PostgreSQL

Hoe voeg ik een nieuwe kolom toe aan een tabel na de 2e of 3e kolom in de tabel met behulp van postgres?

Nee, er is geen directe manier om dat te doen. En daar is een reden voor:elke zoekopdracht moet alle velden vermelden die het nodig heeft, in welke volgorde (en formaat enz.) het ze ook nodig heeft, waardoor de volgorde van de kolommen in één tabel onbeduidend wordt.

Als je dat echt moet doen, kan ik een oplossing bedenken:

  • dump en sla de beschrijving van de betreffende tabel op (met behulp van pg_dump --schema-only --table=<schema.table> ... )
  • voeg de gewenste kolom toe in de opgeslagen definitie
  • de naam van de tabel in de opgeslagen definitie wijzigen om niet te botsen met de naam van de oude tabel wanneer u deze probeert te maken
  • maak de nieuwe tabel met deze definitie
  • vul de nieuwe tabel in met de gegevens uit de oude tabel met 'INSERT INTO <new_table> SELECT field1, field2, <default_for_new_field> , veld3,... VAN <old_table> ';
  • de oude tabel hernoemen
  • de nieuwe tabel hernoemen naar de originele naam
  • laat uiteindelijk de oude, hernoemde tabel vallen nadat je zeker weet dat alles in orde is


  1. Hoe PostgreSQL 12 op Fedora 33 te installeren

  2. ProxySQL:alle bronnen van verschillende Nines

  3. Hoe voeg ik een voorloopnul toe aan een getal in een Oracle SQL-query?

  4. Oracle CREATE TABLE Commando in PL/SQL met 10 voorbeelden