شبكة تعلم مع ناو

كيف أحول عمودًا يحتوي على NULL إلى NOT NULL دون فقدان الصفوف؟

تحويل عمود إلى NOT NULL يعني منع القيم المفقودة في تعريفه الجديد. إذا كانت البيانات الحالية تحتوي على NULL، فيجب معالجة تلك القيم قبل فرض القيد. في إعدادات MySQL 8 الصارمة الافتراضية، لا ينبغي الاعتماد على أن تعديل التعريف سيخمن قيمة مناسبة لكل صف بدلًا عنك.

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

مثال

UPDATE employees SET bonus = 0 WHERE bonus IS NULL;
ALTER TABLE employees MODIFY COLUMN bonus INT NOT NULL;

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

باختصار: عالج القيم المفقودة أولًا، ثم افرض NOT NULL مع الحفاظ على الصفوف والقيم الصحيحة.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.