LoslegenKostenlos loslegen

Bestand prüfen, bevor Bestellungen aufgegeben werden

Mehrfach haben Kundinnen und Kunden Bestellungen für Produkte aufgegeben, obwohl nicht genügend Bestand vorhanden war, um diese zu erfüllen.

Dieses Problem lässt sich leicht beheben, indem du einen neuen Trigger mit bedingter Logik für seine Aktionen hinzufügst.

Der Trigger soll ausgelöst werden, wenn neue Zeilen in die Tabelle Orders eingefügt werden, und prüfen, ob ausreichend Bestand der angegebenen Produkte vorhanden ist, um diese Bestellungen zu erfüllen.

Wenn genügend Bestand vorhanden ist, führt der Trigger dieselbe INSERT-Operation aus wie die, die ihn ausgelöst hat — nur dass die Werte diesmal aus der speziellen Tabelle inserted stammen.

Diese Übung ist Teil des Kurses

Trigger in SQL Server erstellen und optimieren

Kurs anzeigen

Anleitung zur Übung

  • Füge einen neuen Trigger hinzu, der bei INSERT-Anweisungen ausgelöst wird und prüft, ob die Bestellmenge durch den aktuellen Bestand erfüllt werden kann.
  • Löse einen Fehler aus, wenn nicht genügend Bestand vorhanden ist. Andernfalls führe ein INSERT unter Verwendung der speziellen Tabelle inserted aus.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

-- 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;
Code bearbeiten und ausführen