जवाबों:
एक विकल्प के रूप में आप शुरू में नल-सक्षम कॉलम बना सकते हैं, फिर अपने टेबल कॉलम को वैध नहीं अशक्त मानों के साथ अपडेट कर सकते हैं और अंत में नॉट बाधा को सेट करने के लिए कॉलम को अपडेट करें:
ALTER TABLE MY_TABLE ADD STAGE INT NULL
GO
UPDATE MY_TABLE SET <a valid not null values for your column>
GO
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL
GO
एक अन्य विकल्प आपके कॉलम के लिए सही डिफ़ॉल्ट मान निर्दिष्ट करना है:
ALTER TABLE MY_TABLE ADD STAGE INT NOT NULL DEFAULT '0'
UPD: कृपया ध्यान दें कि ऊपर दिए गए उत्तर में वह है GO
जो Microsoft SQL सर्वर पर इस कोड को चलाने पर होना चाहिए। यदि आप Oracle या MySQL पर एक ही ऑपरेशन करना चाहते हैं तो आपको सेमीकोलन का उपयोग करने की आवश्यकता ;
है:
ALTER TABLE MY_TABLE ADD STAGE INT NULL;
UPDATE MY_TABLE SET <a valid not null values for your column>;
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL;
update
कथन किसी भी प्रश्न में हानिकारक होगा। यह देखने के लिए पर्याप्त सरल होना चाहिए कि क्या आपके पास update
बयान में एक अतिरिक्त कॉलम है। आप आम तौर पर एक समय में केवल एक स्तंभ या दो जोड़ रहे होंगे। यदि आप अपने update
स्टेटमेंट में एक अतिरिक्त कॉलम जोड़ते हैं, जो इस उदाहरण में नहीं है, तो हो सकता है कि आप पहले स्थान पर डेटा के प्रभारी न हों।
ALTER COLUMN
SQLite में समर्थित नहीं है।
GO
और यह एसक्यूएल विनिर्देश का हिस्सा नहीं प्रतीत होता है , इस प्रकार यह संभवत: स्क्रिप्ट के लिए विफलता का कारण बन जाएगा जो इसे समर्थन करने वाले उपकरणों में से एक द्वारा निष्पादित नहीं किया जा सकता है। बस अर्धविराम का उपयोग करें? मैं Microsoft मानकों को फैलाने की अनुशंसा नहीं करता क्योंकि वे शायद ही किसी भी स्थापित और उचित मानक के बारे में परवाह करते हैं, लेकिन अपने स्वयं के आविष्कार करने के लिए अपने स्वयं के आविष्कार करते हैं। इसके अलावा, सहायक उत्तर।
यदि आप कॉलम को अशक्त नहीं होने दे रहे हैं, तो आपको मौजूदा पंक्तियों को आबाद करने के लिए एक डिफ़ॉल्ट प्रदान करने की आवश्यकता है। जैसे
ALTER TABLE dbo.YourTbl ADD
newcol int NOT NULL CONSTRAINT DF_YourTbl_newcol DEFAULT 0
एंटरप्राइज एडिशन पर यह 2012 से केवल मेटाडेटा है
त्रुटि संदेश काफी वर्णनात्मक है, कोशिश करें:
ALTER TABLE MyTable ADD Stage INT NOT NULL DEFAULT '-';
अन्य SQL कार्यान्वयन में समान प्रतिबंध हैं। इसका कारण यह है कि एक कॉलम को जोड़ने के लिए उस कॉलम के लिए मान जोड़ने की आवश्यकता होती है (तार्किक रूप से, भले ही शारीरिक रूप से नहीं), जो कि डिफ़ॉल्ट है NULL
। यदि आप अनुमति नहीं देते हैं NULL
, और आपके पास नहीं है default
, तो मूल्य क्या होने वाला है?
चूँकि SQL Server समर्थन करता है ADD CONSTRAINT
, मैं Pavel के एक अशक्त स्तंभ बनाने के दृष्टिकोण की सिफारिश करूँगा, और फिर NOT NULL
इसे गैर- NULL
मानों से भरने के बाद एक बाधा जोड़ना ।
ALTER TABLE `MY_TABLE` ADD COLUMN `STAGE` INTEGER UNSIGNED NOT NULL AFTER `PREV_COLUMN`;
Alter TABLE 'TARGET' add 'ShouldAddColumn' Integer Not Null default "0"