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

प्राथमिक कुंजी के साथ कॉलम डेटाटाइप बदलें

आपको निर्दिष्ट करने की आवश्यकता है NOT NULL स्पष्ट रूप से एक ALTER TABLE ... ALTER COLUMN अन्यथा यह डिफ़ॉल्ट रूप से NULL . की अनुमति देता है . पीके कॉलम में इसकी अनुमति नहीं है।

निम्नलिखित ठीक काम करता है।

CREATE TABLE p
(
ReferenceID VARCHAR(6) NOT NULL PRIMARY KEY
)

INSERT INTO p VALUES ('AAAAAA')

ALTER TABLE p ALTER COLUMN ReferenceID VARCHAR(8) NOT NULL

जब NOT NULL छोड़ा गया है यह निम्न त्रुटि देता है

Msg 5074, Level 16, State 1, Line 1
The object 'PK__p__E1A99A792180FB33' is dependent on column 'ReferenceID'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE ALTER COLUMN ReferenceID failed because one or more objects access this column.

आपके प्रोग्रामेटिक दृष्टिकोण में विचार करने के लिए कुछ चीजें यह हैं कि आप करेंगे ReferenceID . को संदर्भित करने वाली किसी भी विदेशी कुंजी को छोड़ने की आवश्यकता है कॉलम अस्थायी रूप से और यह भी सुनिश्चित करें कि आपने NOT NULL . शामिल नहीं किया है के लिए (गैर PK) ReferenceID कॉलम जो वर्तमान में हैं अशक्त।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ExecuteScalar बनाम ExecuteNonQuery पहचान मान लौटाते समय

  2. क्या टाइमस्टैम्प कॉलम अद्वितीय है?

  3. टी-एसक्यूएल का उपयोग कर स्ट्रिंग से संख्यात्मक भाग कैसे प्राप्त करें?

  4. प्रत्येक लूप के लिए SQL सर्वर

  5. कैसे ठीक करें "से क्लॉज में बल्क रोसेट के लिए एक सहसंबंध नाम निर्दिष्ट किया जाना चाहिए।" SQL सर्वर में