يتم استخدام فهرس MySQL الفريد كطريقة لمعالجة الاستثناءات في Java

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

سؤال

أريد أن أعرف ما إذا كانت فكرة جيدة الحصول على الاستثناء بناءً على فهرس SQL الفريد في Java.

أريد الحصول على استثناء مثل "إدخال مكرر لـ 1-0" إذا كان الأمر كذلك، فقم بمعالجة الاستثناء وإلا أدخله بشكل صحيح في جدول قاعدة البيانات؟

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

المحلول

أقول لك لا تفعل ذلك لسببين:

  • رسائل الخطأ غير واضحة بعض الشيء: الخطأ 1062 (23000):إدخال مكرر "xxx" للمفتاح 1.هل أنت متأكد دائمًا بنسبة 100% من المفتاح الذي هو الرقم 1؟
  • فهو يقيدك ببائع قاعدة بيانات محدد

أجد أنه من الأسهل المعاملات:

  • التحقق من وجود الصف؛
  • طرح استثناء إذا كان الصف موجودًا بالفعل؛
  • أدخل الصف الجديد.

قضايا الأداء:

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

والسبب هو أنه بمجرد إجراء SELECT على هذا الصف المحدد، سيتم وضع بياناته في ذاكرة التخزين المؤقت لقاعدة البيانات و في الحال يستخدم للتحقق من الإدراج الذي تم إجراؤه على الفهرس الخاص بـ INSERT إفادة.مع الأخذ في الاعتبار أيضًا أن هذا الوصول مدعوم بفهرس يؤدي إلى استنتاج مفاده أن الأداء لن يمثل مشكلة.

ولكن، كما هو الحال دائما، قم بالقياس.

نصائح أخرى

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

هل يمكن استخدام الأمر استبدال. ذلك إدراج / التحديثات على أساس وجود السجل. وتحديث الذري جدا في حين الاستعلام ثم إدراج / لها ليست كذلك. ذلك يعتمد على ماذا تريد أن تفعل إذا كشف عن انتهاك الرئيسي؟

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