سؤال

أجرت شركتي ترحيل بيانات مؤخرا (في قاعدة بيانات SQL Server 2005) وقد لاحظنا أن بعض الجداول التي تم إنشاؤها مع SELECT FONT لم تحتفظ بالحقول المحسوبة للجداول الأصلية، ولكن بدلا من ذلك، أنشأ SQL Server حقول منتظمة بالنوع الذي تم إرجاعه بواسطة حساب الأصلي. على سبيل المثال، افترض أن لديك هذا الجدول:

create table Example (
 id int not null,
 quantity decimal(19,5) not null,
 price decimal(19,5) not null,
 total as price*quantity 
)

بعد إجراء * في المثال 2 من مثال تحصل على:

create table Example2 (
 id int not null,
 quantity decimal(19,5) not null,
 price decimal(19,5) not null,
 total decimal(38,9) null
)

لقد قمت بإصلاحها تسقط الحقول السيئة وإعادة إنشاءها، لكنني أريد أن أعرف ما إذا كانت هناك طريقة للحفاظ على الحقول المحسوبة في الجدول الذي تم إنشاؤه باستخدام SELECT TO (ربما مع بعض تكوين SQL Server الخاص أو باستخدام أمر بديل SQL).

شكرا مقدما.

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

المحلول

لا أعتقد أنك ستكون قادرا على القيام بذلك مع الاختيار في - تماما إذا كنت تختار مقابل عرض، فهي مجرد أخذ النتائج وضخها إلى جدول جديد.

من المحتمل أن تحتاج إلى إنشاء الجدول باستخدام الأعمدة المحسوبة أولا، ثم قم بإدراج منتظم من جدول المصدر للأعمدة غير المحسنة.

نصائح أخرى

كسياسة هي الأفضل تجنب استخدام SELECT في لإنشاء جداول خاصة في الترحيل. لن تفقد الحسابات فقط، وسوف تفقد الفهارس، والمشغلات وربما أي افتراضيات أو قيود. في الترحيل، يجب عليك دائما النص على الجداول التي تريد نقلها بما في ذلك المشغلات والفهارس وما إلى ذلك.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top