आप सभी CHECK
. को अक्षम करने के लिए नीचे दिए गए कोड का उपयोग कर सकते हैं और SQL सर्वर में एक विशिष्ट तालिका के लिए विदेशी कुंजी बाधाएं।
बस TableName
replace को बदलें लागू तालिका के नाम के साथ।
ALTER TABLE TableName NOCHECK CONSTRAINT ALL
नीचे एक उदाहरण दिया गया है जहां मैं यह करता हूं और फिर परिणाम की जांच करता हूं।
उदाहरण 1 - बाधाओं की समीक्षा करें
सबसे पहले, मैं वर्तमान CHECK
. पर एक नज़र डालूँगा और डेटाबेस में विदेशी कुंजी बाधाएं, यह देखने के लिए कि वे सक्षम या अक्षम हैं या नहीं।
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
परिणाम:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 0 | 0 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
तो वर्तमान में चार हैं CHECK
डेटाबेस में बाधाएं, जिनमें से तीन ConstraintTest
. के लिए हैं टेबल।
हम देख सकते हैं कि सभी बाधाएं सक्षम हैं क्योंकि is_disabled 0 . पर सेट है ।
उदाहरण 2 - बाधाओं को अक्षम करें
अब मैं ConstraintTest
. के लिए सभी बाधाओं को अक्षम कर दूंगा तालिका:
ALTER TABLE ConstraintTest NOCHECK CONSTRAINT ALL;
उदाहरण 3 - परिणाम जांचें
अब मैं परिणाम देखने के लिए पहले उदाहरण से वही प्रश्न चलाता हूं।
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
परिणाम:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 1 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 1 | 1 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
जैसा कि अपेक्षित था, ConstraintTest . के लिए सभी तीन बाधाएं तालिका अक्षम कर दी गई है (क्योंकि is_disabled कॉलम 1 . पर सेट है उन बाधाओं के लिए)।
ध्यान दें कि is_not_trusted कॉलम 1 . पर भी सेट है . यह एक महत्वपूर्ण विचार है, खासकर यदि आप अपनी किसी भी अक्षम बाधा को फिर से सक्षम करना चाहते हैं।
अपनी बाधाओं को पुन:सक्षम करते समय विश्वास को पुनर्स्थापित करने के तरीके के बारे में जानकारी के लिए SQL सर्वर में चेक बाधा को सक्षम करते समय आपको NOCHECK के बारे में क्या पता होना चाहिए देखें। उस लेख की जानकारी विदेशी कुंजियों पर भी लागू होती है।
प्रतिबंधों को अलग-अलग अक्षम करें
यदि आप तालिका में सभी बाधाओं को अक्षम नहीं करना चाहते हैं, तो आप उन्हें अलग-अलग अक्षम कर सकते हैं। देखें कि SQL सर्वर में CHECK बाधा को कैसे अक्षम करें और SQL सर्वर में विदेशी कुंजी को कैसे अक्षम करें।
प्रतिबंधों को पुन:सक्षम करें
यदि आपको किसी तालिका के लिए सभी बाधाओं को पुन:सक्षम करने की आवश्यकता है, तो तालिका के लिए सभी जांच और विदेशी कुंजी बाधाओं को कैसे सक्षम करें देखें।
यदि आपको उन्हें व्यक्तिगत रूप से पुन:सक्षम करने की आवश्यकता है, तो देखें कि SQL सर्वर में एक CHECK बाधा कैसे सक्षम करें और SQL सर्वर में एक विदेशी कुंजी कैसे सक्षम करें।