1
resposta

Exemplo das clausulas Insert + Select

Olá professor(a)

No exemplo de atualizar a tabela de estoque a partir dos dados da tabela de vendas, não obtive o entendimento completo do funcionamento do código

Segue exemplo: Imagine que temos uma tabela de Vendas, com as colunas ID_venda, ID_produto e quantidade, e uma tabela de Estoque, com as colunas ID_produto e quantidade. Queremos diminuir a quantidade em estoque dos produtos vendidos. Para isso, poderíamos usar a seguinte combinação de INSERT, SELECT e UPDATE:

INSERT INTO Estoque (ID_produto, quantidade) SELECT Vendas.ID_produto, Estoque.quantidade - Vendas.quantidade FROM Vendas, Estoque WHERE Vendas.ID_produto = Estoque.ID_produto;

Nesse exemplo teríamos novos registros com o campo ID_produto repetido certo ? Não seria melhor usar a clausula update para atualizar os dados da tabela e não ter varias registros com o mesmo ID_produto ?

1 resposta

Olá Marcelo,

Entendo sua dúvida, e você está correto em seu questionamento. No exemplo apresentado, a combinação de INSERT e SELECT está criando novas linhas na tabela Estoque, o que pode resultar em linhas com o mesmo ID_produto, o que não é o ideal em muitos casos.

A ideia do exemplo era demonstrar a combinação de INSERT e SELECT, mas na prática, para atualizar a quantidade de produtos em estoque, seria mais apropriado usar a cláusula UPDATE. O UPDATE permite que você modifique os dados de linhas existentes em uma tabela, o que seria mais adequado para a situação que você descreveu.

O código ficaria assim:

UPDATE Estoque
SET quantidade = Estoque.quantidade - Vendas.quantidade
FROM Vendas
WHERE Vendas.ID_produto = Estoque.ID_produto;

Este código irá atualizar a quantidade de cada produto em estoque, subtraindo a quantidade vendida. Isso evita a criação de linhas duplicadas para o mesmo produto.

Espero ter ajudado e bons estudos!