ComenzarEmpieza gratis

Comprobar el stock antes de registrar pedidos

En varias ocasiones, los clientes han hecho pedidos de productos cuando la empresa no tenía stock suficiente para atenderlos.

Este problema se puede solucionar fácilmente añadiendo un trigger nuevo con lógica condicional en sus acciones.

El trigger debe dispararse cuando se añadan nuevas filas a la tabla Orders y comprobar si la empresa tiene stock suficiente de los productos indicados para cumplir esos pedidos.

Si hay stock suficiente, el trigger realizará la misma operación INSERT que lo disparó; solo que, esta vez, los valores se tomarán de la tabla especial inserted.

Este ejercicio forma parte del curso

Crear y optimizar desencadenadores en SQL Server

Ver curso

Instrucciones del ejercicio

  • Añade un trigger nuevo que se dispare para sentencias INSERT y compruebe si la cantidad del pedido puede cubrirse con el stock actual.
  • Lanza un error si no hay stock suficiente. En caso contrario, realiza un INSERT haciendo uso de la tabla especial inserted.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

-- 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 y ejecutar código