Ir ao conteúdo
  • Cadastre-se
Helbert.1985

PostgreSQL Update + Inner Join - 3 Tabelas

Recommended Posts

Boa noite Galera!
Sou novo no mundo DBA. Estou iniciando e já tenho um problema a frente. Gostaria de um help aí. Tenho o seguinte trabalho a fazer na empresa.

Tenho 3 tabelas e preciso atualizar o mesmo valor nas 3, sendo que em cada uma o campo tem um nome diferente. Preciso alterar o código de 2500 produtos, pois a conversão feita por uma ferramenta do sistema avacalhou os códigos dos produtos do cliente, agora preciso consertar.

Exemplo.

Tabela 1

idproduto pk | | cdchamada

01000014AR | | 000011

Tabela 2

idproduto | | cdprincipal

01000014AR | | 000011


Tabela 3

idproduto | | dscodigo

01000014AR | | 000011


Preciso alterar o valor ''000011'' para ''000001'' nas 3 tabelas. Seria fácil fazer um update em cada se fosse apenas um produto, mas o problema é que são 2500. Tentei usar o inner join, mas não estou sabendo fazer corretamente. Agradeço a força aí galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara ,

 

Um comando update que atualiza campos em 3 tabelas eu nunca vi... 

 

agora se é só para alterar de ''000011'' para ''000001'' não é mais fácil fazer um update simples

 

update tabela set campo='000001'' where campo= ''000011''  ? isso muda o valor em todas as ocorrencias dos campos errados na tabela

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, bngomes disse:

Cara ,

 

Um comando update que atualiza campos em 3 tabelas eu nunca vi... 

 

agora se é só para alterar de ''000011'' para ''000001'' não é mais fácil fazer um update simples

 

update tabela set campo='000001'' where campo= ''000011''  ? isso muda o valor em todas as ocorrencias dos campos errados na tabela

 

 

 

Então amigo, seria sim. Mas como o valor tem que ser alterado nas 3 tabelas, teria que fazer 3 updates para atualizar apenas 1 produto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente desconheço como fazer nesse caso.. mas se descobrir como.. avisa ai que fiquei curioso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

@bngomes @Helbert.1985  Não sei se funcionará, mas talvez existe um jeito de fazer isso. Usando a função PIVOT que pode ser usada para mudar as linhas em colunas em um formato de layout fixo.

 

Com isso dá para fazer um laço de While e fazer um update.

Podem conferir uma explicação mais elaborada aqui: http://www.sqlusa.com/articles2005/variablepivot/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só continuo achando que na pratica não tem muito sentido isso... é mais rápido executar o update nas tabelas...Alias não consigo visualizar uma aplicação pratica de fazer update em três tabelas com o mesmo comando sql.

 

Em teoria, o comando UPDATE é para ser feito em um registro especifico, ou um conjunto pequeno de registros. Já é um comando perigoso de usar (pense na consequência de um UPDATE sem WHERE)... e fazer isso em vários tabelas ao mesmo tempo propaga a chance de erro.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×