Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Zukitwo-Dust Unity
Por pinduvoz
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Comunidades

Comunidade Linux Home Participar da comunidade Linux Participar Fórum Linux Fórum Membros LinuxMembros RSS do fórum

<< Primeira | Anterior Próxima | Última >>

Renomear todas as linhas de uma coluna [RESOLVIDO]

[1] Enviado em 02/02/2012 - 13:04h Renomear todas as linhas de uma coluna [RESOLVIDO]
Linux user: fernando freitas do vale
fernandovale

(usa Outra)


Boa tarde galera,

é o seguinte...

eu tenho uma tabela produtos, com n linhas e n colunas.

a coluna codigo ta uma bagunça... começa com 1 que vai pro 10 e depois vai pro 70008892318753...

eu queria o seguinte...

pegar todas as linhas dessa coluna... e colocar um novo codigo para todos os produtos dessa tabela...

por exemplo... produto 1 codigo 1, produto 2 codigo 2 até a ultima linha ...

isso em um comando único via linha de comando dentro do banco ou pelo pgadmin tanto faz... desde que eu nao tenha que fazer produto por produto.

abs

 

  


[2] Enviado em 02/02/2012 - 13:13h Auto incremento
Linux user: Nelson
nelsongesualdi

(usa Debian)


Bem, eu faria o seguinte:

1 - Crie uma outra tabela, a partir do script da sua tabela de produtos, mas com uma coluna a mais, tipo codigo2, que seja definida como autonumeração, algo assim:

CREATE TABLE "PRODUTOS2"(
"codigo2" serial NOT NULL,

... aqui vai o resto da tabela ..

)

2 - Execute o seguinte SQL

INSERT INTO "PRODUTOS2"
(
liste as colunas aqui, menos a codigo2
)
SELECT
liste as colunas aqui da tabela antiga
FROM
"PRODUTOS ORIGINAL"


Feito isso, você terá os números começando do 1 e seguindo de 1 em 1.

Daí vc pode dar um truncate na tabela original, e fazer o insert no caminho inverso, só que vai mover o codigo2 para o codigo1.

Desse jeito, além de você manter um backup da sua tabela original, nada muda no design do seu banco.







 

[3] Enviado em 02/02/2012 - 13:21h Re: Renomear todas as linhas de uma coluna [RESOLVIDO]
Linux user: fernando freitas do vale
fernandovale

(usa Outra)


o problema disso é que nao tenho o script de criação desse banco ou das tabelas...

O sistema e o banco são de terceiros, não seria muito bom alterar algo no conceito do banco como criar uma tabela a mais e tudo mais...

gostaria de algo que alterace somente a coluna linha por linha... nada que vá além disso... porque se der um pau no sistema devido a uma alteração no banco desse nivel não seria bom.

 

[4] Enviado em 02/02/2012 - 13:36h Re: Renomear todas as linhas de uma coluna [RESOLVIDO]
Linux user: Nelson
nelsongesualdi

(usa Debian)


Então, essa solução que eu te propus não muda nada. Se houver integridade referencial, você não vai conseguir fazer. A tabela original fica lá onde está, com o mesmo nome e as mesmas colunas.

Se der problema, é só você voltar o conteúdo dela a partir da tabela que você criou.

Você vai ter que olhar a questão dos códigos dos produtos nas outras tabelas do sistema e fazer um de/para para atualizá-las. Tudo isso se faz com SQL.

Agora, se você não for experiente, o que está me parecendo, melhor esquecer essa ideia e ficar com os números bagunçados mesmo.

 

[5] Enviado em 02/02/2012 - 13:44h Re: Renomear todas as linhas de uma coluna [RESOLVIDO]
Linux user: fernando freitas do vale
fernandovale

(usa Outra)


Realmente tem razão não sou muito experiente em postgres...

Mas acontece que ta dando pau na hora de incluir os produtos novos entao tem que ser feito.

E estou querendo ver se existe alguma outra alternativa além dessa, porque como bem sei, assim como na area de redes ou de sistemas, não existe uma solução única para um problema.

Se existir uma mais simples, vendo que o banco é novo e ainda está em fase de cadastramento e esses produtos ainda não foram referenciados em nenhuma outra tabela.

 

[6] Enviado em 02/02/2012 - 13:56h Re: Renomear todas as linhas de uma coluna [RESOLVIDO]
Linux user: Nelson
nelsongesualdi

(usa Debian)


Se você não tem problemas de referenciamento em outras tabelas, tá fácil. Faça o que eu te disse que vai dar certinho, sem susto. A única coisa que vai mudar serão os códigos.

Posso te garantir que você não vai encontrar uma solução mais simples do que essa. São 3 SQLs e pronto. Sem cursor, sem programa e ainda com a tabela que você criar ficando de backup. Mais simples, impossível, pode acreditar. Depois de 15 anos como DBA DB2, Oracle, SYBASE e SQLSERVER, posso te garantir isso.

 

[7] Enviado em 02/02/2012 - 14:58h Re: Renomear todas as linhas de uma coluna [RESOLVIDO]
Linux user: fernando freitas do vale
fernandovale

(usa Outra)


create temp sequence produto_renumera_seq;

update produto set codigo=nextval('produto_renumera_seq');

esse resolveu o problema.


 

  
<< Primeira | Anterior Próxima | Última >>
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.