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

SQL सर्वर में एक कॉलम को Null से Not Null में कैसे बदलें?

  • अपूर्ण कॉलम में डेटा की सीमाओं को समझना
    • मौजूदा कॉलम डेटा को रद्द करना
  • कॉलम डेटा संरचना बदलें
    • बदली हुई अशक्तता की पुष्टि करें

SQL सर्वर में किसी कॉलम की डेटा संरचना को NULL . से बदलना करने के लिए NOT NULL , जिससे उस कॉलम में गैर-शून्य मानों को अस्वीकार कर दिया जाता है, आमतौर पर अपेक्षाकृत सरल ALTER TABLE का उपयोग करके किया जाता है विचाराधीन कॉलम को उचित रूप से बदलने के लिए सिंटैक्स।

इस ट्यूटोरियल में हम मौजूदा . को बदलते समय आवश्यक महत्वपूर्ण सुरक्षा सावधानियों की जांच करेंगे वास्तव में कोई भी ALTER issuing जारी करने से पहले कॉलम में डेटा आदेश जो संभावित रूप से तालिका को ही नुकसान पहुंचा सकते हैं।

नॉट-न्यूल कॉलम में डेटा की सीमाओं को समझना

आपकी तालिका में कोई भी परिवर्तन किए जाने से पहले, यह महत्वपूर्ण है कि मौजूदा कॉलम में कौन सा डेटा निर्दिष्ट किया जा सकता है (और नहीं) जिसे आप NOT NULL में बदलना चाहते हैं। , यह सुनिश्चित करना कि किसी भी पंक्ति में NULL . होने की अनुमति नहीं है उस कॉलम में मान।

सबसे गंभीर रूप से, सभी मौजूदा NULL कॉलम के भीतर मान होना चाहिए ALTER . से पहले एक गैर-शून्य मान में अपडेट किया जाना चाहिए कमांड का सफलतापूर्वक उपयोग किया जा सकता है और कॉलम बनाया जा सकता है NOT NULL . कॉलम को NOT NULL पर सेट करने का कोई भी प्रयास जबकि वास्तविक NULL कॉलम में बचे हुए डेटा के परिणामस्वरूप त्रुटि होगी और कोई परिवर्तन नहीं होगा।

मौजूदा कॉलम डेटा को रद्द करना

यह सुनिश्चित करने के लिए कि कोई NULL नहीं है हमारे कॉलम में मान, हम एक बुनियादी UPDATE का उपयोग करेंगे कमांड, उन पंक्तियों पर स्पष्ट रूप से लागू होता है जहां मान वर्तमान में NULL है . उदाहरण के लिए, हमारे पास client . की एक मूल तालिका है name के साथ डेटा , email , और phone . वर्तमान में कुछ रिकॉर्ड में NULL है phone मूल्य, जिसकी हम अनुमति नहीं देना चाहते:

clientsID     name              email                                         phone
1             Neville Estes     Quisque@diamProin.com                         1-843-863-2697
2             Flynn Fry         velit@senectus.net
3             Wyatt Schmidt     nibh.dolor@sit.co.uk                          1-950-895-1847
4             Oleg Hill         lacinia.vitae.sodales@acrisusMorbi.edu        1-173-344-1578
5             Randall Bullock   eu@lacus.net
6             Lamar White       ut.sem@risus.com                              1-421-757-4907
7             Fuller Hill       Vivamus.nisi@tempor.ca                        1-178-437-8281
8             Ulysses Boyle     sem.mollis.dui@Integeraliquamadipiscing.net   1-535-515-1494
9             Paki Palmer       nec@euismod.org
10            Kamal Buchanan    sapien.gravida@tellusnonmagna.co.uk           1-325-847-4838

इसलिए, हम सभी phone . के लिए एक डिफ़ॉल्ट मान सम्मिलित कर सकते हैं वे मान जो वर्तमान में NULL हैं निम्नलिखित कथन के साथ:

UPDATE
  clients
SET
  phone = '0-000-000-0000'
WHERE
  phone IS NULL;

अब हमारा NULL सभी मानों को उस मान से बदल दिया गया है जिसे हम default . मानते हैं , 0-000-000-0000 :

clientsID   name            email                                       phone
1           Neville Estes   Quisque@diamProin.com                       1-843-863-2697
2           Flynn Fry       velit@senectus.net                          0-000-000-0000
3           Wyatt Schmidt   nibh.dolor@sit.co.uk                        1-950-895-1847
4           Oleg Hill       lacinia.vitae.sodales@acrisusMorbi.edu      1-173-344-1578
5           Randall Bullock eu@lacus.net                                0-000-000-0000
6           Lamar White     ut.sem@risus.com                            1-421-757-4907
7           Fuller Hill     Vivamus.nisi@tempor.ca                      1-178-437-8281
8           Ulysses Boyle   sem.mollis.dui@Integeraliquamadipiscing.net 1-535-515-1494
9           Paki Palmer     nec@euismod.org                             0-000-000-0000
10          Kamal Buchanan  sapien.gravida@tellusnonmagna.co.uk         1-325-847-4838

कॉलम डेटा संरचना बदलें

अब जबकि कोई NULL नहीं है अब कोई भी मान, हम अपना ALTER जारी कर सकते हैं कॉलम को अपडेट करने के लिए स्टेटमेंट ताकि भविष्य के सभी जोड़ NULL . की अनुमति न दें मूल्य। चूंकि हम phone . को बदल रहे हैं इस उदाहरण में कॉलम, स्टेटमेंट कुछ इस तरह दिखेगा:

ALTER TABLE
  clients
ALTER COLUMN
  phone
    NVARCHAR(20) NOT NULL;

बदली हुई अशक्तता की पुष्टि करें

एक बार आपके कॉलम में परिवर्तन हो जाने के बाद, यह सत्यापित करना एक अच्छा अभ्यास है कि कॉलम अब किसी भी NULL की अनुमति नहीं देता है। एक साधारण INSERT . चलाकर मान परीक्षण करें और NULL . के साथ एक नया रिकॉर्ड डालने का प्रयास करें बदले गए कॉलम में मान:

INSERT INTO
  clients(name, email, phone)
VALUES
  ('John Doe', 'jdoe@domain.com', NULL);

यदि सब कुछ योजना के अनुसार हुआ, तो SQL सर्वर यह बताते हुए एक त्रुटि जारी करेगा कि कॉलम NULL की अनुमति नहीं देता है। मान:

Cannot insert the value NULL into column 'phone', table 'library.dbo.clients'; column does not allow nulls. INSERT fails. [SQL State=23000, DB Errorcode=515]

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2016 :उपलब्धता समूह संवर्द्धन

  2. एक अदिश चर में SQL सर्वर आउटपुट क्लॉज

  3. SQL सर्वर मैनेजमेंट स्टूडियो (SSMS) में वर्टिकल ब्लॉक्स को चुनें और संपादित करें - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 9

  4. डेटाबेस प्रदर्शन निगरानी का उपयोग करके अपने SQL सर्वर को कैसे गति दें

  5. Microsoft SQL सर्वर त्रुटि 926 को कैसे ठीक करें? - हल किया गया