परिदृश्य:
आप SQL सर्वर डेवलपर के रूप में काम कर रहे हैं, आपको dbo.Customer तालिका बनाने की आवश्यकता है जिसमें प्रथम नाम, आयु और आयु प्रकार के कॉलम होने चाहिए। आप CustomerId को पहचान के रूप में जोड़ सकते हैं। आपको नीचे दिए गए तर्क के साथ आयु और आयु प्रकार के कॉलम पर चेक बाधा बनाने की आवश्यकता है<65 Agetype="Adult" and="" p="">
अगर सही है तो रिकॉर्ड को डालने या अपडेट करने दें अन्यथा चेक बाधा के कारण विफल हो जाता है।
65>
<65 Agetype="Adult" and="" p="">समाधान:65>
<65 Agetype="Adult" and="" p="">नीचे दी गई स्क्रिप्ट का उपयोग हमारी आवश्यकता के अनुसार एकाधिक कॉलम पर चेक बाधा जोड़ने के लिए किया जा सकता है।65>
CREATE TABLE dbo.Customer ( CustomerId INT identity(1, 1) ,NAME VARCHAR(100) ,Age INT ,AgeType VARCHAR(15) ,CONSTRAINT dbo_Customer_AgeAndAgeType CHECK ( ( Age <= 17 AND AgeType = 'Child' ) OR ( Age > 17 AND Age < 65 AND AgeType = 'Adult' ) OR ( Age >= 65 AND AgeType = 'Senior' ) ) )
चलो कुछ रिकॉर्ड सम्मिलित करें और यह देखने की कोशिश करें कि क्या चेक बाधा अपेक्षा के अनुरूप काम कर रही है।
--Correct values accrording to Constraint insert into dbo.Customer(Name,Age,AgeType) Values('Najaf',13,'Child') go --Wrong values according to Check Constraint insert into dbo.Customer(Name,Age,AgeType) Values('Leena',14,'Adult') go --Correct values accroding to Constraint insert into dbo.Customer(Name,Age,AgeType) Values('Raza',30,'Adult') go --Wrong values according to Check Constraint insert into dbo.Customer(Name,Age,AgeType) Values('Aamir',30,'Senior') go --Wrong values according to Check Constraint insert into dbo.Customer(Name,Age,AgeType) Values('John',65,'Adult') go --Correct values accroding to Constraint insert into dbo.Customer(Name,Age,AgeType) Values('Kris',65,'Senior') go
(1 पंक्ति(पंक्ति) प्रभावित)
संदेश 547, स्तर 16, राज्य 0, पंक्ति 25
INSERT कथन CHECK बाधा "dbo_Customer_AgeAndAgeType" के विपरीत है। डेटाबेस "YourDatabaseName", तालिका "dbo.Customer" में विरोध हुआ।
विवरण समाप्त कर दिया गया है।
(1 पंक्ति(पंक्ति) प्रभावित)
संदेश 547, स्तर 16, राज्य 0, लाइन 33
INSERT कथन CHECK बाधा "dbo_Customer_AgeAndAgeType" के विपरीत है। डेटाबेस "YourDatabaseName", तालिका "dbo.Customer" में विरोध हुआ।
विवरण को समाप्त कर दिया गया है।
Msg 547, Level 16, State 0, Line 37
INSERT कथन का विरोध किया गया जाँच बाधा "dbo_Customer_AgeAndAgeType"। डेटाबेस "YourDatabaseName", तालिका "dbo.Customer" में विरोध हुआ।
विवरण समाप्त कर दिया गया है।
(1 पंक्ति(पंक्ति) प्रभावित)
आइए चुनिंदा क्वेरी का उपयोग करके तालिका में डेटा की जांच करें। जैसा कि नीचे देखा जा सकता है केवल रिकॉर्ड डाले गए हैं जो चेक बाधा को पार कर गए हैं। शेष रिकॉर्ड सम्मिलित नहीं किए जा सके।
एसक्यूएल सर्वर टेबल में एकाधिक कॉलम पर चेक बाधा कैसे बनाएं |
आइए रिकॉर्ड्स को अपडेट करने का प्रयास करें और देखें कि क्या चेक बाधा अपेक्षा के अनुरूप काम कर रही है।
update dbo.Customer set Age=30 where Customerid=1
यह नीचे की त्रुटि के साथ विफल हुआ क्योंकि हमारे पास हमारे चेक बाधा तर्क के अनुसार AgeType='Child' के लिए आयु 30 नहीं हो सकती है।
Msg 547, Level 16, State 0, पंक्ति 18
अद्यतन विवरण CHECK बाधा "dbo_Customer_AgeAndAgeType" के विपरीत है। डेटाबेस "YourDatabaseName", तालिका "dbo.Customer" में विरोध हुआ।
विवरण को समाप्त कर दिया गया है।
वीडियो डेमो :कैसे करें चेक बाधा SQL सर्वर में एकाधिक कॉलम