سؤال

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

عند إجراء بحث على Google، يبدو أنني قد أتمكن من تحقيق ذلك باستخدام Rowid؟لكنني لست متأكدًا من كيفية الرجوع إلى طريقة العرض.فيما يلي مثال لكيفية عمل Rowid الذي تصورته، ولكن من الواضح أنه فشل مع وجود خطأ "عمود غامض" لأنني لا أحدد جدولًا محددًا لـ Rowid.

السابق:


    with v_someTable (select...),
      v_anotherTable as (select blah, id from v_someTable where...),
      v_yetAnotherTable as (select foo, id from v_someTable where...)
    select distinct rowid, rt.key, v1.blah, v2.foo
    from realTable rt 
      left join v_anotherTable v1 on v1.id=rt.id 
      left join v_yetAnotherTable v2 on v2.id=rt.id

أحاول القيام بذلك في استعلام وليس في إجراء مخزن.سيكون موضع تقدير أي مساعدة!

شكرًا!

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

المحلول

أفهم أن رمز العلامة العام يشير إلى صف في جدول فعلي ، بدلاً من صف في مجموعة نتائج (وهو ما يمثل طريقة العرض فعليًا).

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

نصائح أخرى

إذا لم يكن لديك مفاتيح أساسية في جميع جداولك ، يمكنك تحديد الصفوف من الجداول الفردية وربطها: Genacodicetagpre

لا تستخدم العمود الزائف ROWID ، فهو يعتمد على التخزين (وقد يتغير عند استخدام رمز الترقيم العام المفيد).لا يمكنك أيضًا استخدامه للبحث عن السجلات (المرتبطة) في طريقة العرض بطريقة فعالة.

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

تمت الإجابة على هذا السؤال لبعض الوقت ولكن يرجى توخي الحذر عند ربط المفاتيح الأساسية.على سبيل المثال عندما يكون لديك key1 = 23 and key2 = 45 والربط به 2345 ليس من الواضح ما إذا كانت المفاتيح موجودة أم لا 23 and 45 أو لو كانوا كذلك 2 and 345.

استخدم محددًا (23,45 -> 23_45) لا يمكن أن يحدث في أي من المفاتيح (ليست كل المفاتيح رقمية).أو املأ المفاتيح لأقصى طول ممكن (23,45 -> 00230045 (for key1 and key2 NUMBER(4,0))).

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

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