DB2 السيارات ولدت العمود / تتولد دائما إيجابيات وسلبيات على التسلسل

StackOverflow https://stackoverflow.com/questions/1026936

  •  06-07-2019
  •  | 
  •  

سؤال

كنا في وقت سابق باستخدام 'ولدت دائما'لتوليد قيم المفتاح الأساسي.ولكن الآن هو أنه ينبغي بدلا من استخدام 'ولدت دائما' , استخدام تسلسل ملء قيمة المفتاح الأساسي.ما رأيك يمكن أن يكون سبب هذا التغيير ؟ هذا مجرد مسألة الاختيار ؟

في وقت سابق من التعليمات البرمجية:

CREATE TABLE SCH.TAB1
 (TAB_P         INTEGER         NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE),
.
.
);

الآن هو

CREATE TABLE SCH.TAB1
 (TAB_P         INTEGER ),
.
.
);

الآن حين إدراج ، وتوليد قيمة TAB_P عن طريق التسلسل.

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

المحلول

أنا أميل إلى استخدام الأعمدة الهوية أكثر من متواليات ، ولكن سوف أقارن بين اثنين بالنسبة لك.

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

منذ سلسلة مستقلة كائن يمكن أن تولد أرقام جداول متعددة (أو أي شيء آخر) و لا يتأثر عند أي طاولة انخفض.عند جدول مع عمود هوية إسقاط لا يوجد الذاكرة من قيمة ما تم تعيين آخر قبل أن عمود هوية.

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

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

نصائح أخرى

هذا من المحتمل أن يكون قد للتعامل مع معرفات في حال هناك الكثير من يحذف على الطاولة.

على سبيل المثال:في قضية الهوية ، إذا كان لديك معرفات 1 2 3

الآن إذا قمت بحذف سجل 3 من الجدول الخاص بك وسوف يكون 1 2

ثم إذا كان إدراج سجل جديد ، معرفات سوف يكون 1 2 4

بدلا من ذلك, إذا كنت لا تستخدم عمود الهوية و تولد الهوية باستخدام رمز ، ثم بعد حذف جديدة تضاف يمكنك حساب الهوية كما max(id) + 1, لذا معرفات سوف يكون في النظام 1 2 3

لا أستطيع التفكير في أي سبب آخر ، لماذا عمود الهوية لا ينبغي أن تستخدم.

هيريس شيء وجدت على publib الموقع:

مقارنة الهوية أعمدة وسلاسل

في حين أن هناك أوجه تشابه بين الهوية أعمدة متواليات ، هناك أيضا اختلافات.خصائص كل يمكن استخدامها عند تصميم قاعدة البيانات الخاصة بك والتطبيقات.

عمود الهوية لديه الخصائص التالية:

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

تسلسل كائن لديه الخصائص التالية:

  • تسلسل كائن قاعدة بيانات الكائن الذي لا يرتبط بأي واحد الجدول.
  • تسلسل كائن يولد متسلسلة القيم التي يمكن استخدامها في أي SQL أو XQuery البيان.
  • منذ تسلسل كائن يمكن استخدامها من خلال أي تطبيق ، وهناك نوعان من التعبيرات المستخدمة للسيطرة على استرجاع القيمة التالية في تحديد تسلسل القيمة ولدت السابقة إلى بيان يتم تنفيذه.القيمة السابقة يرجع التعبير في الآونة الأخيرة ولدت قيمة المحدد تسلسل بيان سابق في الدورة الحالية.التالي قيمة التعبير بإرجاع المقبل القيمة المحددة تسلسل.على استخدام هذه التعبيرات يسمح بنفس القيمة التي يمكن استخدامها عبر العديد من SQL و XQuery البيانات داخل العديد من الجداول.

في حين أن هذه ليست من خصائص هذين البندين ، هذه الخصائص سوف يساعدك في تحديد أي استخدام اعتمادا على تصميم قاعدة البيانات و التطبيقات باستخدام قاعدة البيانات.

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

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