Sunday, 15 September 2013

sql - Insert into column without having IDENTITY -


मेरे पास एक टेबल है

  बनाएँ तालिका [मिश्र] ([misc_id] [int] नहीं, शून्य, [एमआईपी_ ग्रुप] [एनवर्चार] (255) नाउल, [एमआईसीएडीसी] [एनवर्चार] (255) नल)  

जहां misc_id [int] नहीं रिक्त पहचान होना चाहिए था (कोड 1) (1,1) लेकिन अब नहीं है और मुझे अब समस्या आ रही है

एक साधारण रूप से जो इस तालिका में सम्मिलित है, लेकिन misc_id उस नंबर की तलाश कर रहा है जिसे किसी उपयोगकर्ता को तब तक नहीं पता होगा जब तक कि उसे डेटाबेस तक पहुंच न हो।

मुझे पता है कि एक और कॉलम बनाने के लिए एक विकल्प होगा, इसे IDENTITY (1,1 ) और उस डेटा की प्रतिलिपि बनाएँ।

क्या कोई दूसरा तरीका है जिससे मैं इस पर भरोसा कर पाऊं?

  संमिलित करें (misc_group, misc_desc) VALUES  

मेरे पास SQL ​​सर्वर 2012

आपको वांछित पहचान कॉलम के साथ अपनी तालिका पुनः बनाना चाहिए। निम्नलिखित बयानों आपको करीब मिलेंगे। SQL सर्वर स्वचालित रूप से तालिका की पहचान फ़ील्ड MAX (misc_id) +1 को समायोजित कर देगा क्योंकि आप डेटा माइग्रेट कर रहे हैं।

आपको स्पष्ट रूप से नए रिकॉर्ड के साथ misc_id को सम्मिलित करने का प्रयास करना बंद कर देना होगा। रिकॉर्ड दर्ज करने के बाद आप SCOPE_IDENTITY () कॉलम को पुनः प्राप्त करना चाहते हैं।

  - नोट: मैं सुझाता हूं कि SSMS को अपना बयान बनाएँ जिससे आप जानते हो कि आपको कुछ भी याद नहीं है। आपको इंडेक्स और विदेशी कुंजी भी निर्यात करनी होगी। प्रदर्शन को सुधारने और विखंडन को कम करने के लिए डेटा को लोकप्रिय बनाने के बाद उन्हें जोड़ें। बनाओ टेबल [misc_new] ([misc_id] [इंट] नल पहचान (1,1), [misc_group] [nvarchar] (255) नहीं नल, [misc_desc] [nvarchar] (255) नहीं नल - तोडो: डॉन ' प्राथमिक कुंजी को भूल जाओ, लेकिन बाद में जोड़ा जा सकता है (अनुशंसित नहीं)।) सेट जाओ IDENTITY_INSERT misc_new चालू; INSERT misc_new ([misc_id], [misc_group], [misc_desc]) का चयन करें [misc_id], [misc_group], [misc_desc] misc_id द्वारा मिश्रित आदेश से; SET IDENTITY_INSERT misc_new OFF; जाओ EXEC sp_rename 'misc', 'misc_old'; EXEC sp_rename 'misc_new', 'misc'; जाओ  

No comments:

Post a Comment