برمجة

إضافة قيد PostgreSQL للبيانات القديمة على مرحلتين باستخدام NOT VALID

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

ابدأ بتحديد القاعدة التجارية

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

افصل الإضافة عن التحقق

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

صحّح دون خسارة المعنى

احصر الصفوف المخالفة باستعلام قراءة وقارن كل فئة بمصدرها. صحّحها على دفعات قابلة للاستئناف واكتب سجلًا يربط السجل الأصلي بالقرار. بعد زوال المخالفات استخدم VALIDATE CONSTRAINT. التحقق يأخذ قفل SHARE UPDATE EXCLUSIVE على الجدول المستهدف، وله اعتبارات إضافية عند المفتاح الأجنبي، فاختبر التزامن في نسخة مشابهة.

اختبر ثلاث حالات

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

من فايندو جروب: أنظمة ERP.

المراجع

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

التعليقات

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

أضف تعليقك

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

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

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