2008-09-19 17 views
5

एसक्यूएल सर्वर 2000/2005 में,फोर्स डिफ़ॉल्ट मान जब तालिका में कॉलम जोड़ने - एसक्यूएल सर्वर

क्या यह संभव है डिफ़ॉल्ट मान मजबूर करने के लिए पहले से ही विद्यमान जाने वाली पंक्तियां जब बिना एक मेज में एक नया स्तंभ जोड़ने लिखे जाने की नए कॉलम पर न्यूल का उपयोग कर?

उत्तर

10

आप दो बयानों की जरूरत है। पहले नल के साथ कॉलम बनाएं। फिर नल के लिए

alter table mytable add mycolumn varchar(10) not null default ('a value') 
alter table mytable alter column mycolumn varchar(10) null 
1

मुझे शक है।

http://msdn.microsoft.com/en-us/library/ms190273(SQL.90).aspx

दृष्टिकोण माइक्रोसॉफ्ट द्वारा की सिफारिश की (ऊपर यूआरएल से लिया गया) इस प्रकार है

UPDATE MyTable SET NullCol = N'some_value' WHERE NullCol IS NULL 
ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL 
4

मैं अपने प्रश्न समझ में नहीं अशक्त बाधा बदलने के लिए, लेकिन आप भविष्य रिकॉर्ड के लिए कि, शून्य (अज्ञात, अनिश्चित या जो कुछ भी अपने अर्थ विज्ञान कर रहे हैं) कह रहे हैं स्वीकार्य है (लेकिन अगर यह में छोड़ दिया जाता है एक सम्मिलित, एक डिफ़ॉल्ट होगा), लेकिन यह सभी मौजूदा डेटा के लिए, आप आगे बढ़ने जा रहे हैं और इसे डिफ़ॉल्ट असाइन करेंगे।

मुझे इस स्थिति में कड़ी मेहनत करनी होगी और पूछना होगा कि आप भविष्य में रिकॉर्ड्स में एनयूएलएल को क्यों अनुमति दे रहे हैं - किसी भी ऐतिहासिक रिकॉर्ड में यह नहीं होगा, और भविष्य के रिकॉर्ड के लिए एक डिफ़ॉल्ट जगह है।

0

ALTER TABLE {TABLENAME} ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE} [**WITH VALUES]**

मान के साथ तालिका में प्रत्येक मौजूदा पंक्ति के नए स्तंभ में डिफ़ॉल्ट मान स्टोर करने के लिए इस्तेमाल किया जा सकता।

एमएसडीएन लिंक पर अधिक जानकारी। https://msdn.microsoft.com/en-in/library/ms190273.aspx

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