एक आउट-ऑफ़-लाइन बाधा का उपयोग करें:
CREATE TABLE Goods_In_Wagon (
Goods_ID NUMBER(whatever),
Wagon_ID NUMBER(whatever),
Total_Weight NUMBER(whatever),
CONSTRAINT Check_WagID_Weight
CHECK (Wagon_ID NOT BETWEEN 90 AND 99 OR Total_Weight > 10)
)
अगर Wagon_ID
है नहीं 90 और 99 के बीच, बाधा गुजरती है। अगर यह 90 और 99 के बीच है, तो Total_Weight
10 से अधिक होना चाहिए।
इस तरह की एक आउट-ऑफ-लाइन बाधा आपको पंक्ति स्तर पर बाधा तर्क लागू करने की अनुमति देती है, जिसका अर्थ है कि यह किसी भी स्तंभ मान का उपयोग कर सकता है।
परिशिष्ट Wagon_ID
. की श्रेणियों के साथ अपडेट किए गए प्रश्न को हल करने का तरीका यहां दिया गया है और Total_Weight
. शायद अन्य तरीके भी हैं लेकिन यह "सबसे साफ" जैसा महसूस हुआ, जिसका अर्थ है कि मेरे लिए व्यक्तिगत रूप से पढ़ना सबसे आसान था :)
CREATE TABLE Goods_In_Wagon(
Goods_ID NUMBER(whatever),
Wagon_ID NUMBER(whatever),
Total_Weight NUMBER(whatever),
CONSTRAINT Check_WagID_Weight
CHECK (
(Wagon_ID < 90) OR
(Wagon_ID BETWEEN 90 AND 99 AND Total_Weight > 10) OR
(Wagon_ID BETWEEN 100 AND 110 AND Total_Weight > 20) OR
(Wagon_ID BETWEEN 111 AND 120 AND Total_Weight > 30) OR
(Wagon_ID > 120)
)
)