ÎncepețiÎncepe gratuit

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

Vezi cursul

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 INSERT folosind 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;
Editează și rulează codul