SQL – UPDATE a partir de um SELECT

E ai galera, beleza?

Hoje vamos aprender como efetuar UPDATE em registros obtidos a partir de um SELECT, temos duas formas e fazê-lo, para exemplificar vamos considerar o seguinte SELECT:

SELECT A.*
FROM TAB_A A JOIN TAB_B B ON (A.ID = B.ID)
WHERE <CONDIÇÕES...>

Opção 1 – Utilizar o SELECT desejado no lugar da tabela a ser alterada, no SET utilize as colunas da TAB_A que serão atualizadas:

UPDATE (
SELECT A.*
FROM TAB_A A JOIN TAB_B B ON (A.ID = B.ID)
WHERE <CONDIÇÕES...>
) SET <COL1 TAB_A> = <VAL1>, <COL2 TAB_A> = <VAL2>

A abordagem acima em algumas modelagem podem acarretar no erro ORA-01779: cannot modify a column which maps to a non key-preserved table, quando isso acontecer utilize a opção 2, abaixo.

Opção 2 – Utilizar a clausula EXISTS no WHERE do UPDATE tradicional:

UPDATE TAB_A TA
SET <COL1 TAB_A> = <VAL1>, <COL2 TAB_A> = <VAL2>
WHERE EXISTS (
SELECT A.*
FROM TAB_A A JOIN TAB_B B ON (A.ID = B.ID)
WHERE <CONDIÇÕES...>
AND A.ID = TA.ID
)

Espero que tenha ajudado! Qualquer dúvida, poste aqui nos comentários que eu responderei o mais breve possível 😉

See ya!

Anúncios

About Gustavo Amaro

+ Formado em Tecnologia e Análise de Sistemas + MBA em Desenvolvimento de Aplicações JAVA – SOA

Posted on 14 de Novembro de 2017, in Banco de Dados, SQL and tagged , , , , , , , , , , , , , , , , . Bookmark the permalink. Deixe um comentário.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: