PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como adicionar uma nova coluna em uma tabela após a 2ª ou 3ª coluna na tabela usando postgres?


Não, não há uma maneira direta de fazer isso. E há uma razão para isso - cada consulta deve listar todos os campos de que precisa em qualquer ordem (e formato, etc.), tornando a ordem das colunas em uma tabela insignificante.

Se você realmente precisa fazer isso, posso pensar em uma solução alternativa:
  • despeje e salve a descrição da tabela em questão (usando pg_dump --schema-only --table=<schema.table> ... )
  • adicione a coluna desejada onde quiser na definição salva
  • renomeie a tabela na definição salva para não colidir com o nome da tabela antiga ao tentar criá-la
  • crie a nova tabela usando esta definição
  • preencha a nova tabela com os dados da tabela antiga usando 'INSERT INTO <new_table> SELECT campo1, campo2, <default_for_new_field> , field3,... FROM <old_table> ';
  • renomeie a tabela antiga
  • renomeie a nova tabela com o nome original
  • descarte a tabela antiga e renomeada depois de verificar se está tudo bem