2012-01-08 21 views
5

अरे, मैं 1 से शुरू होने वाले अपने पहचान कॉलम मानों को संशोधित करना चाहता हूं, मुझे पता है कि डीबीसीसी अध्यक्ष के साथ ऐसा कैसे करना है, हालांकि, मैं सभी मौजूदा पंक्तियों में मूल्य को प्रतिस्थापित करना चाहता हूं। इस तालिका में 2 मिलियन से अधिक पंक्तियां हैं।मौजूदा डेटा पर पहचान कॉलम को संशोधित/प्रतिस्थापित कैसे करें

इस कार्य के लिए सबसे अच्छा तरीका क्या है?

उत्तर

6

आप बस एक नया पहचान कॉलम जोड़ सकते हैं, एक ला How to add a new identity column to a table in SQL Server?। बस पुराने कॉलम को हटाएं और इसे फिर से जोड़ें। यह निश्चित रूप से किसी भी विदेशी कुंजी को तोड़ देगा, लेकिन मुझे लगता है कि आप सब कुछ फिर से क्रमांकित कर रहे हैं, मुझे लगता है कि यह ठीक है।

+2

यदि आपके पास महत्वपूर्ण संबंध हैं, तो मैं पुराने कॉलम को संरक्षित करने का सुझाव दूंगा जबतक कि आप नए आईडी मान के साथ सभी बाल तालिकाओं को अपडेट नहीं कर सकते। वे इसे छोड़ सकते हैं। – HLGEM

+0

इसके साथ समस्या यह है कि SQL सर्वर में किसी तालिका में एकाधिक पहचान कॉलम नहीं हो सकते हैं: http://stackoverflow.com/questions/349092/can-a-sql-server-table-have-two-identity-columns। आपको पहले पुराने से पहचान विशेषता को हटाना होगा। –

+1

वाईई, यह सच है कि आपको पहचान संपत्ति को हटाने की आवश्यकता है। – HLGEM

2

कैसे मूल्यों को बदलने के लिए इस उदाहरण देखें, लेकिन Reseed कुछ और है:

CREATE TABLE t (id INT IDENTITY) 
GO 
INSERT t DEFAULT VALUES 
GO 25 

SET IDENTITY_INSERT t ON 

delete t 

OUTPUT DELETED.Id+100 INTO T(Id) 

SET IDENTITY_INSERT t Off 

SELECT * FROM t 

DROP TABLE t 

का एक उदाहरण reseed:

DBCC CHECKIDENT('YourTableName', 150, reseed) 

और

आप के लिए है, तो मान को प्रतिस्थापित करें - 2 एम पंक्तियों के साथ इसे निश्चित रूप से समय लेना होगा

+0

आपके सुझाव के लिए धन्यवाद – jr3

संबंधित मुद्दे