Renomear todas as linhas de uma coluna [RESOLVIDO]

1. Renomear todas as linhas de uma coluna [RESOLVIDO]

fernando freitas do vale
fernandovale

(usa Outra)

Enviado em 02/02/2012 - 13:04h

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. Auto incremento

Nelson
nelsongesualdi

(usa Debian)

Enviado em 02/02/2012 - 13:13h

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. Re: Renomear todas as linhas de uma coluna [RESOLVIDO]

fernando freitas do vale
fernandovale

(usa Outra)

Enviado em 02/02/2012 - 13:21h

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. Re: Renomear todas as linhas de uma coluna [RESOLVIDO]

Nelson
nelsongesualdi

(usa Debian)

Enviado em 02/02/2012 - 13:36h

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. Re: Renomear todas as linhas de uma coluna [RESOLVIDO]

fernando freitas do vale
fernandovale

(usa Outra)

Enviado em 02/02/2012 - 13:44h

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. Re: Renomear todas as linhas de uma coluna [RESOLVIDO]

Nelson
nelsongesualdi

(usa Debian)

Enviado em 02/02/2012 - 13:56h

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. Re: Renomear todas as linhas de uma coluna [RESOLVIDO]

fernando freitas do vale
fernandovale

(usa Outra)

Enviado em 02/02/2012 - 14:58h

create temp sequence produto_renumera_seq;

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

esse resolveu o problema.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts