Como trocar a posição de coluna em uma tabela?
19/03/2014
0
Daniel Hannemann
Posts
19/03/2014
Jair N.
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.
05/07/2014
Ronaldo Lanhellas
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.
07/07/2014
Daniel Hannemann
Caso no futuro eu tenha alguma dúvida vou postar aqui sim ^^
Clique aqui para fazer login e interagir na Comunidade :)