سؤال

يمثل Afaik Rowid في Oracle الموقع الفعلي لسجل في DataFile المناسب. في أي حالات قد يتغير رويد من السجل؟

الشخص المعروف لي هو تحديث على الجدول المقسم الذي "ينقل" السجل إلى قسم آخر.

هل هناك حالات أخرى؟ معظم DBS لدينا هي Oracle 10.

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

المحلول

كما قلت ، يحدث في أي وقت يتم نقل الصف جسديًا على القرص ، مثل:

  • تصدير/استيراد الجدول
  • تغيير الجدول xxxx تحرك
  • تغيير الجدول xxxx تقلص مساحة
  • جدول الفلاش باك xxxx
  • تقسيم قسم
  • تحديث قيمة بحيث ينتقل إلى قسم جديد
  • الجمع بين قسمين

إذا كان في جدول منظم فهرس ، فإن تحديث المفتاح الأساسي من شأنه أن يمنحك RowID مختلفًا أيضًا.

نصائح أخرى

+1 ww

جانبا:

تختلف RowId للجداول المنظمة الفهرس (تسمى urowid ، على ما أعتقد) ، لأن الموقع الفعلي للصف يمكن أن يتغير أثناء التحديثات إلى الجدول (عندما تنقسم عقد الشجرة أو انضمامها).

من أجل جعل الفهرسة لا تزال ممكنة ، يتضمن urowid "المعرف المنطقي" (المفتاح الأساسي) ، و "المعرف المادي المحتمل" (RowID العادي) ، والتي قد تنتهي صلاحيتها.

آخر +1 إلى WW ، ولكن فقط لإضافة القليل إضافية ...

إذا كان سؤال القيادة هو ما إذا كان يمكنك تخزين Rowids للاستخدام لاحقًا ، فأنا أقول "لا تفعل ذلك".

أنت بخير لاستخدام Rowids ضمن معاملة - على سبيل المثال جمع مجموعة من Rowids لتنفيذ عمليات لاحقة - ولكن يجب عليك أبداً قم بتخزين Rowids في طاولة وافترض أنها ستكون على ما يرام لاستخدامها في وقت لاحق.

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