IniziaInizia gratis

Controllare lo stock prima di inserire gli ordini

In più occasioni, i clienti hanno effettuato ordini per prodotti quando l'azienda non aveva abbastanza stock per evaderli.

Questo problema si può risolvere facilmente aggiungendo un nuovo trigger con logica condizionale per le sue azioni.

Il trigger deve attivarsi quando vengono aggiunte nuove righe alla tabella Orders e verificare se l'azienda ha scorte sufficienti dei prodotti indicati per soddisfare quegli ordini.

Se lo stock è sufficiente, il trigger eseguirà quindi la stessa operazione di INSERT che lo ha attivato—solo che questa volta i valori verranno presi dalla tabella speciale inserted.

Questo esercizio fa parte del corso

Creare e ottimizzare i trigger in SQL Server

Visualizza il corso

Istruzioni dell'esercizio

  • Aggiungi un nuovo trigger che si attivi per le istruzioni INSERT e controlli se la quantità ordinata può essere soddisfatta dallo stock attuale.
  • Genera un errore se lo stock non è sufficiente. Altrimenti, esegui un INSERT facendo uso della tabella speciale inserted.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

-- 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;
Modifica ed esegui il codice