PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment ajouter une nouvelle colonne dans une table après la 2e ou la 3e colonne de la table à l'aide de postgres ?

Non, il n'y a pas de moyen direct de le faire. Et il y a une raison à cela - chaque requête doit répertorier tous les champs dont elle a besoin dans l'ordre (et le format, etc.) dont elle a besoin, rendant ainsi l'ordre des colonnes dans une table insignifiant.

Si vous avez vraiment besoin de le faire, je peux penser à une solution :

  • vider et sauvegarder la description de la table en question (en utilisant pg_dump --schema-only --table=<schema.table> ... )
  • ajoutez la colonne souhaitée à l'endroit souhaité dans la définition enregistrée
  • renommez la table dans la définition enregistrée afin de ne pas entrer en conflit avec le nom de l'ancienne table lorsque vous essayez de la créer
  • créer la nouvelle table en utilisant cette définition
  • Remplir la nouvelle table avec les données de l'ancienne table en utilisant 'INSERT INTO <new_table> SELECT champ1, champ2, <default_for_new_field> , champ3,... FROM <old_table> ';
  • renommer l'ancienne table
  • renommer la nouvelle table avec le nom d'origine
  • supprimez éventuellement l'ancienne table renommée après vous être assuré que tout va bien