Imagine a situação: Você tem uma tabela com os dados de um produto e outra tabela com uma coluna complementar. As duas tabelas possuem um campo que pode (seguramente) ser utilizado como chave. Neste post mostro como criar um update com inner join, para que você possa atualizar uma das tabelas com os dados da outra.
Imagine a tabela PRODUTO:
- prod_id
- prod_nome
- prod_descricao
- prod_status
E a tabela PRODUTO_AUXILIAR:
- aux_id
- prod_id
- prod_status
Acho importante mencionar que estas tabelas só tem duas utilidades:
- Servir de exemplo neste post;
- Servir de exemplo de uma péssima arquitetura de banco 😛 ;
O que queremos é atualizar a coluna prod_status (da tabela produto) com a informação que consta na coluna prod_status da tabela produto_auxiliar onde o prod_id seja menor que 10. A coluna prod_id das duas tabelas pode ser utilizada como chave na ligação de um inner join.
Este é um update razoavelmente simples:
update PRODUTO p inner join PRODUTO_AUXILIAR pa on p.prod_id = pa.prod_id set p.prod_status = pa.prod_status where p.prod_id < 10;
A sintaxe do inner join para o update é feita logo após a definição do nome da tabela que será atualizada.
Neste exemplo, se você quiser atualizar todos os registros da tabela produto com as informações da tabela produto_auxiliar, poderia simplesmente remover a clausula where, uma vez que o inner join vai ‘filtrar’ as linhas afetadas.
Quer testar, mas não sabe se vai funcionar? Não seja –aquele estagiário–, utilize as transações:
- Utilize o comando START TRANSACTION;
- Faça os testes e confira os resultados;
- Utilize o commando ROLLBACK; (ou, se tudo der certo, o COMMIT;)
Espero ter ajudado!
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022