برمجة

تحديث PostgreSQL بشرط الإصدار لحماية السجل من الرسائل القديمة

فريق فايندو جروب2 دقائق قراءة0 مشاهدة0 تعليقات
مشاركة:
واجهة قاعدة بيانات تعرض نسخة مخزنة أحدث ورسالة قديمة مرفوضة

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

اربط التعارض بهوية السجل

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

اختبر الكتابة المرفوضة دون خطأ

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

اقرأ RETURNING ضمن عقد العملية

يوضح مرجع PostgreSQL أن الصف لا يظهر في RETURNING إذا لم ينفذ التحديث لأن شرط WHERE لم يتحقق، حتى لو قُفل أثناء تقييم التعارض. عالج النتيجة الفارغة كحالة متوقعة للرسالة المتأخرة أو المكررة في هذا التصميم. لا تستخدمها وحدها لاستنتاج محتوى السجل الحالي أو تسجيل نجاح كتابة لم تحدث.

راجع المدخلات التي لا تقارن مباشرة

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

يمكن تطبيق الاختبارات ضمن تطوير أنظمة الشركات وأنظمة ERP.

المرجع الفني PostgreSQL INSERT.

صورة توضيحية أصلية مرتبطة بالمثال.

التصنيفات:برمجة
شارك:

التعليقات

لا توجد تعليقات بعد

أضف تعليقك

كن أول من يعلق على هذا المقال

02 · تابع القراءة

مقالات ذات صلة