سؤال

باستخدام السبات، هل يمكنك إنشاء معرف مركب حيث يمكن أن يحتوي أحد الأعمدة التي تقوم بتعيينها للمعرف على قيم فارغة؟

يهدف هذا إلى التعامل مع جدول قديم يحتوي على مفتاح فريد يمكن أن يحتوي على قيم فارغة ولكن لا يحتوي على مفتاح أساسي.

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

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

المحلول

لا.لا يمكن أن تكون المفاتيح الأساسية فارغة.

نصائح أخرى

هذا غير مستحسن.هل يمكنك استخدام طريقة العرض والخريطة بدلاً من ذلك؟يمكنك استخدام COALESCE لتوفير الإعداد الافتراضي إذا كنت عالقًا في البيانات القديمة.لقد واجهنا الكثير من المشاكل مع المفاتيح المركبة وأتصور أن القيم الخالية ستسبب المزيد من المشكلات.

بالنسبة للمفاتيح المركبة (بافتراض أن قاعدة البيانات تسمح بالقيم الخالية في PKs) يمكنك الحصول على الحد الأقصى لعدد_of_cols^2 - 1 إدخالات تحتوي على قيم خالية، (على سبيل المثال بالنسبة للمفتاح المركب المكون من عمودين، يمكنك الحصول على 3 صفوف تحتوي على مفتاح أساسي فارغ، والرابع هو PK بدون القيم الخالية).

لماذا تريد أن تفعل ذلك؟يجب أن يقوم المعرف المركب الخاص بك بتعيين المفتاح الأساسي لجدولك، وليس من الحكمة وضع قيم فارغة في المفتاح، أليس كذلك؟

يحرر: السبات لا يسمح بذلك؛يمكنك وضع الخاصية خارج المفتاح وتعديل DAO قليلاً لأخذ الحقل في الاعتبار حيثما كان ذلك ضروريًا

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

لسوء الحظ، لا.اضطررت إما إلى استخدام الحل البديل:

لقد استخدمت معرفًا مركبًا للعرض (!not table) حيث يمكن تحديد الصفوف بعمودين بالضبط (A، B).على الرغم من أن أحد العمودين (B) يمكن أن يحتوي على قيم فارغة بالإضافة إلى أعداد صحيحة موجبة.لذا فإن الحل البديل هو أنني قمت بإنشاء عمود جديد في العرض:"BKey" ويتم كتابة وجهة نظري كما لو كانت B فارغة فإن قيمة BKey هي -1 وإلا BKey = B.(توجد الأعداد الصحيحة الموجبة فقط في B وnull).لقد قمت أيضًا بتغيير تطبيق المعرف المركب الخاص بي لاستخدام BKey بدلاً من B.نأمل أن يساعد لشخص ما..

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