Como trocar a posição de coluna em uma tabela?

19/03/2014

0

Gostaria de saber como trocar a posição de coluna em uma tabela ou, caso não seja possível, como adicioná-la em uma posição específica (por padrão ela sempre fica como a mais a direita). No MySQL basta usar o comando "After Nome_Coluna;", mas no Postgre não funciona. Ficarei muito grato com qualquer ajuda.
Daniel Hannemann

Daniel Hannemann

Responder

Posts

19/03/2014

Jair N.

Bom Dia, "ter? Tem! Porém, é meio complicado... bem já fiz isso alguma vezes o problema é que não existe um processo automático para isso. Você deve estar se perguntando então como? Seguinte,..

Fiz uma "gambiarra para isso, poderia ter criado uma função etc e tal. Porém ainda não o fiz "preguiça" mas vou te passar o que tenho...

-- Selecionando a tabela...
SELECT pg_attribute.attnum
, pg_attribute.attname
FROM pg_attribute
INNER JOIN pg_type
ON (pg_type.typrelid = pg_attribute.attrelid)
WHERE (pg_type.typname = 'my_tabela') -- nome da tabela para pesquisa
AND (pg_attribute.attstattarget = -1)
-- Alterando o valor...
UPDATE pg_attribute
SET attnum = 5 -- quantidade de posições posteriores
FROM pg_type
WHERE (pg_type.typrelid = pg_attribute.attrelid)
AND (pg_type.typname = 'my_tabela') -- nome da tabela para pesquisa
AND (pg_attribute.attname = 'my_campo') -- nome do campo para pesquisa
AND (pg_attribute.attstattarget = -1)

Para o efeito desejado é melhor alterar todos os campos com uma seqüência posterior aquela que você quer ai depois nesse intervalo acrescentar o que você está querendo....
Qualquer dúvida pergunte... se eu tiver a resposta postarei...

Atc.


Responder

05/07/2014

Ronaldo Lanhellas

Não há uma forma automática, eu creio que a forma mais rápida é a seguinte:

1 - Crie uma tabela auxiliar, cópia da tabela original, apenas com a posição da coluna onde você deseja.
2 - Cria um INSERT Com SELECT da tabela original para a tabela auxiliar.
3 - Pronto, agora delete a original e mude o nome da auxiliar para a original.
Responder

07/07/2014

Daniel Hannemann

Muito obrigado pelas respostas e pela atenção! Foram mt úteis!
Caso no futuro eu tenha alguma dúvida vou postar aqui sim ^^
Responder

07/07/2014

Ronaldo Lanhellas

Fique a vontade, ajudaremos no que for possível.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar