ऑर्डर प्लेस करने से पहले स्टॉक जाँचना
कई बार ग्राहकों ने ऐसे उत्पादों के लिए ऑर्डर दिए हैं जब कंपनी के पास उन्हें पूरा करने के लिए पर्याप्त स्टॉक नहीं था।
इस समस्या को आसानी से एक नया ट्रिगर जोड़कर और उसकी कार्रवाइयों के लिए कंडीशनल लॉजिक लगाकर ठीक किया जा सकता है।
ट्रिगर को तब फायर होना चाहिए जब Orders टेबल में नई पंक्तियाँ जोड़ी जाएँ, और यह जाँचे कि दिए गए उत्पादों का ऑर्डर पूरा करने के लिए कंपनी के पास पर्याप्त स्टॉक है या नहीं।
यदि पर्याप्त स्टॉक है, तो ट्रिगर वही INSERT ऑपरेशन करेगा जैसा उसे फायर करने वाले ऑपरेशन ने किया था—बस इस बार वैल्यूज़ inserted स्पेशल टेबल से ली जाएँगी।
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Triggers बनाना और उनका अनुकूलन
अभ्यास निर्देश
- ऐसा नया ट्रिगर जोड़ें जो
INSERTस्टेटमेंट्स पर फायर हो और जाँच करे कि वर्तमान स्टॉक से ऑर्डर की मात्रा पूरी की जा सकती है या नहीं। - यदि स्टॉक अपर्याप्त हो तो एक त्रुटि उठाएँ। अन्यथा,
insertedस्पेशल टेबल का उपयोग करकेINSERTकरें।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
-- 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;