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
Istruzioni dell'esercizio
- Aggiungi un nuovo trigger che si attivi per le istruzioni
INSERTe controlli se la quantità ordinata può essere soddisfatta dallo stock attuale. - Genera un errore se lo stock non è sufficiente. Altrimenti, esegui un
INSERTfacendo uso della tabella specialeinserted.
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;