سؤال

قاعدة بيانات ضخمة في mssql2005 مع تعليمات البرمجة الأساسية اعتمادا على بنية قاعدة البيانات هذه.

لدي حوالي 10 مماثلة الجداول جميعها تحتوي على اسم الملف أو المسار الكامل إلى الملف.المسار الكامل هو دائما يعتمد على العنصر معرف لذلك لا معنى تخزينها في قاعدة البيانات.الحصول على معلومات مفيدة من هذه الجداول يذهب مثل هذا:

SELECT a.item_id
, a.filename
FROM (
    SELECT id_item AS item_id
    , path AS filename
    FROM xMedia

    UNION ALL

    -- media_path has a different collation
    SELECT item_id AS item_id
    , (media_path COLLATE SQL_Latin1_General_CP1_CI_AS) AS filename
    FROM yMedia

    UNION ALL

    -- fullPath contains more than just the filename
    SELECT itemId AS item_id
    , RIGHT(fullPath, CHARINDEX('/', REVERSE(fullPath))-1) AS filename
    FROM zMedia

    -- real database has over 10 of these tables
) a

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

بعد قراءة msdn الصفحة حول وخلق وجهات النظر في mssql2005 لا أعتقد أن عرض مع SCHEMABINDING سيكون كافيا.

كيف يمكنني إنشاء مثل هذه للتحديث الرأي ؟

هل هذا هو الطريق الصحيح للذهاب ؟

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

المحلول

يمكنك تعديل تقسيم الآراء ، شريطة أن تستوفي شروط معينة.

وتشمل هذه الشروط وجود partitioning column كجزء من المفتاح الأساسي على كل طاولة ، وجود مجموعة على غير متداخلة تحقق القيود تقسيم العمود.

يبدو أن هذا ليس الحال.

في الحالة الخاصة بك ، يمكنك القيام بأي مما يلي:

  • سمعت الجداول وجهات نظر (مع الأعمدة المحسوبة) على الإرث الخاص بك لينة العمل ، يرجى الرجوع إلى الجدول بأكمله من جديد لينة
  • استخدام INSTEAD OF يؤدي إلى تحديث الجداول.

نصائح أخرى

وانتقل لأسفل على الصفحة التي ترتبط وسترى فقرة عن وجهات قابلة للتحديث. لا يمكنك تحديث طريقة عرض القائمة على النقابات، من بين غيرها من القيود. المنطق وراء هذا هو على الارجح بسيط، وكيف ينبغي أن تقرر SQL Server على ما مصدر الجدول / الرأي يجب أن تتلقى التحديث / إدراج؟

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

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

بدلا من INSERT الزناد
بدلا من UPDATE الزناد
بدلا من الحذف الزناد

scroll top