2008-09-04 16 views
8

क्या कोई SQL सर्वर में कॉलम को छोड़ दिए बिना गणना किए गए कॉलम को बदलने का तरीका जानता है। मैं कॉलम का उपयोग एक गणना कॉलम के रूप में करना बंद करना चाहता हूं और सीधे कॉलम में डेटा संग्रहीत करना चाहता हूं, लेकिन वर्तमान मानों को बनाए रखना चाहता हूं।एसक्यूएल सर्वर आल्टर कंप्यूटटेड कॉलम

क्या यह भी संभव है?

उत्तर

9

मैं के बारे में पता है कि ऐसा नहीं है लेकिन यहाँ कुछ है जो आप कर सकते

कि गणना स्तंभ के मूल्यों के साथ स्तंभ तो अभिकलन स्तंभ ड्रॉप अद्यतन तालिका के लिए एक और स्तंभ जोड़ने

1

ठीक है, तो मुझे देखने दो कि मुझे यह सीधे मिला है या नहीं। आप एक कॉलम लेना चाहते हैं जो वर्तमान में गणना की गई है और इसे एक सादा-जेन डेटा कॉलम बनाएं। आम तौर पर यह कॉलम छोड़ देगा लेकिन आप डेटा को कॉलम में रखना चाहते हैं।

  1. अपनी स्रोत तालिका और जेनरेट किए गए कॉलम से प्राथमिक कुंजी कॉलम के साथ एक नई तालिका बनाएं।
  2. अपनी स्रोत तालिका से डेटा को नई तालिका में कॉपी करें।
  3. अपनी स्रोत तालिका पर कॉलम बदलें।
  4. डेटा को वापस कॉपी करें।

कोई फर्क नहीं पड़ता कि आप क्या करते हैं मुझे यकीन है कि कॉलम बदलना निश्चित रूप से इसे छोड़ देगा। इस तरह थोड़ा और जटिल है लेकिन बुरा नहीं है और यह आपके डेटा को बचाता है।

[संपादित करें: @ एसक्लमेनस का जवाब बहुत आसान है। :) आपको मेनस अभिशाप !! :)]

1

हैं आपको कॉलम का नाम बनाए रखने की आवश्यकता है (ताकि क्लाइंट कोड तोड़ना न पड़े), आपको कॉलम ड्रॉप करना होगा और एक ही नाम के साथ संग्रहीत कॉलम वापस जोड़ना होगा। आप एक ही लेनदेन में परिवर्तन (SQLMenace के समाधान के आधार पर) करके डाउनटाइम के बिना ऐसा कर सकते हैं। यहां कुछ छद्म कोड हैं:

 
begin transaction 
    drop computed colum X 
    add stored column X 
    populate column using the old formula 
commit transaction 
संबंधित मुद्दे