161 votes

Comment modifier la position d'une colonne dans une table de base de données PostgreSQL™ ?

J'ai essayé ce qui suit, mais j'ai échoué :

ALTER TABLE person ALTER COLUMN dob POSITION 37;

98voto

Allwin Points 11

Dans PostgreSQL™, tout en ajoutant un champ, il serait ajouté à la fin de la table. Si nous devons insérer dans une position particulière, alors

    alter table tablename rename to oldtable;
    create table tablename (column defs go here); ### with all the constraints
    insert into tablename (col1, col2, col3) select col1, col2, col3 from oldtable;

26voto

Ville Points 366

L'une, bien que maladroite, consiste à réorganiser les colonnes lorsque l'ordre des colonnes doit absolument être modifié et que des clés étrangères sont utilisées, c'est d'abord de vider toute la base de données avec des données, puis de ne vider que le schéma (pg_dump -s databasename > databasename_schema.sql). Modifiez ensuite le fichier de schéma pour réorganiser les colonnes comme vous le souhaitez, puis recréez la base de données à partir du schéma, et enfin restaurez les données dans la base de données nouvellement créée.

12voto

Mike Woodhouse Points 27748

Je ne pense pas que vous puissiez pour le moment : voir cet article sur le wiki de Postgresql.

Les trois solutions de contournement de cet article sont :

  1. Recréer la table
  2. Ajouter des colonnes et déplacer des données
  3. Masquer les différences avec une vue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X