ComeçarComece de graça

Verificando o estoque antes de fazer pedidos

Em diversas ocasiões, clientes fizeram pedidos de produtos quando a empresa não tinha estoque suficiente para atendê-los.

Esse problema pode ser facilmente resolvido adicionando um novo trigger com lógica condicional para suas ações.

O trigger deve ser acionado quando novas linhas forem adicionadas à tabela Orders e verificar se a empresa tem estoque suficiente dos produtos especificados para atender esses pedidos.

Se houver estoque suficiente, o trigger então executará a mesma operação INSERT que o acionou — só que, desta vez, os valores serão obtidos da tabela especial inserted.

Este exercício faz parte do curso

Criando e Otimizando Triggers no SQL Server

Ver curso

Instruções do exercício

  • Adicione um novo trigger que seja acionado por instruções INSERT e verifique se a quantidade do pedido pode ser atendida pelo estoque atual.
  • Lance um erro se não houver estoque suficiente. Caso contrário, faça um INSERT usando a tabela especial inserted.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

-- Create a new trigger to confirm stock before ordering
CREATE TRIGGER ConfirmStock
ON Orders
INSTEAD OF ___
AS
	IF EXISTS (SELECT *
			   FROM Products AS p
			   INNER JOIN inserted AS i ON i.Product = p.Product
			   WHERE p.Quantity < i.Quantity)
	BEGIN
		___ ('You cannot place orders when there is no stock for the order''s product.', 16, 1);
	END
	ELSE
	BEGIN
		INSERT INTO Orders (OrderID, Customer, Product, Price, Currency, Quantity, WithDiscount, Discount, OrderDate, TotalAmount, Dispatched)
		SELECT OrderID, Customer, Product, Price, Currency, Quantity, WithDiscount, Discount, OrderDate, TotalAmount, Dispatched FROM ___;
	END;
Editar e executar o código