Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida Incluindo Múltiplos Registros

Minha dúvida é a seguinte: Na aula 3 do capítulo 3 fomos apresentados à possibilidade de inserir dados em uma tabela a partir dos dados de outra tabela. Até aí, entendi e achei bem legal a funcionalidade que eu, como iniciante na área, não conhecia. A dúvida que ficou após o termino da aula é que, ao inserir um dado que possui o mesmo código, sendo essa coluna uma pk, naturalmente resultará em um erro. Na aula, usamos a condição where para retirar esse item da lista e inserir apenas os demais. Porém, como eu estou importando os dados de uma tabela pra outra e por ventura esses dados apesar de um ou outro possuírem o mesmo código, os produtos forem diferentes, eu necessitarei inseri-lo de alguma maneira, não sendo o where a função ideal para uso. Nesse caso, como se faz? Existe alguma função que alteraria o código para outro ainda não existente no caso de códigos repetidos?

1 resposta
solução!

Olá, Bruno, tudo bem?

Desde já peço desculpas pela demora em obter retorno.

Uma possibilidade é utilizar uma cláusula MERGE.

O comando MERGE é usado para combinar operações INSERT, UPDATE e DELETEem uma única declaração. Ele pode ser útil quando você deseja lidar com registros duplicados em uma única consulta.

A estrutura do merge é a seguinte:

MERGE tabela_destino AS target
USING tabela_origem AS source
ON (condicao_de_juncao)
WHEN MATCHED THEN
    -- Executar operações UPDATE se houver correspondência
WHEN NOT MATCHED THEN
    -- Executar operações INSERT se não houver correspondência
WHEN NOT MATCHED BY SOURCE THEN
    -- Executar operações DELETE se não houver correspondência na tabela de origem

Na condição WHEN MATCHED é definida as operações que devem ser executadas quando há correspondência entre a tabela de destino e a tabela de origem. Aqui, você pode realizar operações de atualização na tabela de destino com base nos valores da tabela de origem.

Deixo o link da documentação caso queira saber um pouco mais: MERGE (Transact-SQL)

Bruno, aproveito para comunicar que o curso ganhou uma versão atualizada: Microsoft SQL Server 2022: manipulando dados

Espero ter ajudado.

Caso surja quaisquer dúvida, fico à disposição.

Abraços e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!