Verificarea stocului înainte de plasarea comenzilor
În mai multe rânduri, clienții au plasat comenzi pentru produse pe care compania nu le avea în stoc în cantitate suficientă pentru a le onora.
Această problemă poate fi rezolvată simplu prin adăugarea unui nou trigger cu logică condițională.
Trigger-ul trebuie să se declanșeze când sunt adăugate rânduri noi în tabela Orders și să verifice dacă compania dispune de stoc suficient din produsele specificate pentru a onora acele comenzi.
Dacă stocul este suficient, trigger-ul va efectua aceeași operațiune INSERT ca cea care l-a declanșat—doar că de această dată, valorile vor fi preluate din tabela specială inserted.
Acest exercițiu face parte din cursul
Crearea și optimizarea triggerelor în SQL Server
Instrucțiuni pentru exercițiu
- Adaugă un nou trigger care se declanșează pentru instrucțiunile
INSERTși verifică dacă cantitatea comandată poate fi onorată din stocul curent. - Generează o eroare dacă stocul este insuficient. În caz contrar, efectuează un
INSERTfolosind tabela specialăinserted.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
-- 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;