2008-11-17 9 views
5

से तालिका फ़ील्ड को अद्यतन करने के लिए अद्यतन स्क्रिप्ट अपडेट करें मेरे पास SQL ​​सर्वर डेटाबेस में एक तालिका में एक फ़ील्ड (कहना, foo) है जिसे मूल रूप से शून्य के रूप में परिभाषित किया गया था, लेकिन नई आवश्यकताएं इंगित करती हैं कि यह फ़ील्ड गैर-शून्य होना चाहिए।SQL सर्वर में शून्य से गैर-न्यूल

तालिका के सामग्रियों को हटाए बिना अद्यतन फ़ील्ड के माध्यम से इस क्षेत्र को अद्यतन करने का सबसे अच्छा तरीका क्या है? मैंने डिज़ाइन व्यू से एक स्क्रिप्ट उत्पन्न करने का प्रयास किया, लेकिन निष्पादन के दौरान विफल रहता है क्योंकि तालिका की वर्तमान सामग्री में foo के लिए कुल मान थे। इससे भी बदतर, अगर मैंने इस त्रुटि को अनदेखा किया है, तो यह तालिका की सभी सामग्री को हटाने के लिए आगे बढ़ता है!

उत्तर

10

NULLNULL में NULL सक्षम कॉलम में NOT NULL पर बदलने से पहले आपको किसी भी पंक्ति में मूल्य निर्धारित करना होगा।

-- Clean up the data which won't comply with the schema changes 
UPDATE t SET foo = 0 WHERE foo IS NULL 

-- Apply the NOT NULL 
ALTER TABLE t ALTER COLUMN foo int NOT NULL 

-- Add a default for the future if that's what you want 
ALTER TABLE t ADD CONSTRAINT t_foo_def DEFAULT 0 FOR foo 
0

आप गैर-शून्य क्षेत्र में डिफ़ॉल्ट मान सेट कर सकते हैं। यदि आप इसे शून्य से गैर-शून्य करने के लिए बदलना चाहते हैं तो आपको कुछ मूल्य प्रदान करना होगा जिसे उस क्षेत्र में शून्य मान के साथ पंक्तियों को असाइन किया जा सकता है।

संबंधित मुद्दे