سؤال

هل يعرف أحد طريقة لتغيير عمود محسوب دون إسقاط العمود في SQL Server.أريد التوقف عن استخدام العمود كعمود محسوب والبدء في تخزين البيانات مباشرة في العمود، ولكنني أرغب في الاحتفاظ بالقيم الحالية.

هل هذا ممكن حتى؟

هل كانت مفيدة؟

المحلول

لا أعرف ذلك ولكن هنا شيء يمكنك القيام به

أضف عمودًا آخر إلى الجدول تحديث هذا العمود بقيم العمود المحسوب ثم إسقاط العمود المحسوب

نصائح أخرى

حسنًا ، دعني أرى ما إذا كنت قد فهمت هذا بشكل صحيح.تريد أن تأخذ عمودًا محسوبًا حاليًا وتجعله عمود بيانات عادي.عادةً ما يؤدي هذا إلى إسقاط العمود ولكنك تريد الاحتفاظ بالبيانات الموجودة في العمود.

  1. قم بإنشاء جدول جديد باستخدام أعمدة المفاتيح الأساسية من الجدول المصدر والعمود الذي تم إنشاؤه.
  2. انسخ البيانات من الجدول المصدر إلى الجدول الجديد.
  3. قم بتغيير العمود الموجود في الجدول المصدر.
  4. انسخ البيانات مرة أخرى.

بغض النظر عما تفعله، فأنا متأكد من أن تغيير العمود سيؤدي إلى إسقاطه.هذه الطريقة أكثر تعقيدًا بعض الشيء ولكنها ليست بهذا السوء وتحفظ بياناتك.

[يحرر:إجابة @SqlMenace أسهل بكثير.:) اللعنة عليك الخطر!:)]

إذا كنت بحاجة إلى الحفاظ على اسم العمود (حتى لا يتم كسر رمز العميل)، فستحتاج إلى إسقاط العمود وإعادة إضافة عمود مخزن بنفس الاسم.يمكنك القيام بذلك دون توقف عن العمل عن طريق إجراء التغييرات (على غرار حل SQLMenace) في معاملة واحدة.وإليك بعض التعليمات البرمجية الزائفة:

begin transaction
   drop computed colum X
   add stored column X
   populate column using the old formula
commit transaction
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top