Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में किसी बड़ी तालिका में आप NOT NULL कॉलम कैसे जोड़ते हैं?

मैं अपने काम के लिए भी इस समस्या में भाग गया। और मेरा समाधान #2 के साथ है।

यहाँ मेरे कदम हैं (मैं SQL सर्वर 2005 का उपयोग कर रहा हूँ):

1) तालिका में कॉलम को डिफ़ॉल्ट मान के साथ जोड़ें:

ALTER TABLE MyTable ADD MyColumn varchar(40) DEFAULT('')

2) एक NOT NULL जोड़ें NOCHECK . के साथ बाधा विकल्प। NOCHECK मौजूदा मूल्यों पर लागू नहीं होता:

ALTER TABLE MyTable WITH NOCHECK
ADD CONSTRAINT MyColumn_NOTNULL CHECK (MyColumn IS NOT NULL)

3) तालिका में बढ़ते हुए मानों को अपडेट करें:

GO
UPDATE TOP(3000) MyTable SET MyColumn = '' WHERE MyColumn IS NULL
GO 1000
  • अपडेट स्टेटमेंट केवल अधिकतम 3000 रिकॉर्ड अपडेट करेगा। यह उस समय डेटा का एक हिस्सा बचाने की अनुमति देता है। मुझे "MyColumn IS NULL" का उपयोग करना है क्योंकि मेरी तालिका में अनुक्रम प्राथमिक कुंजी नहीं है।

  • GO 1000 पिछले कथन को 1000 बार निष्पादित करेगा। यह 3 मिलियन रिकॉर्ड अपडेट करेगा, अगर आपको और चाहिए तो बस इस संख्या को बढ़ाएं। यह तब तक निष्पादित होता रहेगा जब तक SQL सर्वर अद्यतन विवरण के लिए 0 रिकॉर्ड नहीं लौटाता।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल में एक स्ट्रिंग में सबस्ट्रिंग की पहली घटना को बदलें

  2. DLL 'SqlServerSpatial.dll' लोड करने में असमर्थ

  3. प्रति समूह पहली पंक्ति का चयन

  4. SQL सर्वर में समूहीकृत संयोजन

  5. SQL सर्वर के लिए डिफ़ॉल्ट भाषा कैसे बदलें?