1
resposta

Inserção condicional de dados

Durante o curso iniciante de SQL, eles abordaram o tema "Inserção Condicional de dados" durante as atividades, só que eu não vi isso nos vídeos e admito que não entendi muito bem. Alguém pode me explicar?

OBS: O código de exemplo utilizado foi esse:

INSERT OR REPLACE INTO Estoque (ID_produto, quantidade)
SELECT Vendas.ID_produto, Estoque.quantidade - Vendas.quantidade
FROM Vendas
JOIN Estoque ON Vendas.ID_produto = Estoque.ID_produto;

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Ei! Tudo bem, Riquelme?

Claro, vamos direto ao ponto: inserção condicional é quando você usa um INSERT junto com um SELECT para inserir (ou atualizar) dados apenas quando certas condições do banco são atendidas, normalmente baseadas no resultado de uma consulta.

No SQLite, quando você usa:

INSERT OR REPLACE INTO Estoque (ID_produto, quantidade)
SELECT Vendas.ID_produto, Estoque.quantidade - Vendas.quantidade
FROM Vendas
JOIN Estoque ON Vendas.ID_produto = Estoque.ID_produto;

No código é sobre:

  • SELECT trazer os dados prontos
    Ele calcula a nova quantidade em estoque subtraindo a quantidade vendida.

  • INSERT OR REPLACE inserir ou substituir

  1. Se o ID_produto já existe na tabela, ele substitui a linha.

  2. Se não existir, ele insere uma nova.

  • A “condição” vem do JOIN
    Só entram na operação os produtos que existem ao mesmo tempo na tabela Vendas e na tabela Estoque.
    Ou seja: o comando só atualiza produtos que realmente foram vendidos e estão registrados no estoque.

Por isso chamamos de inserção condicional: o INSERT só acontece para os registros retornados pelo SELECT e esse SELECT só retorna produtos que atendem às condições do JOIN.

Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

Até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!