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
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
INSERTunter Verwendung der speziellen Tabelleinsertedaus.
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;