NOT NULL و DEFAULT
NOT NULL and DEFAULT
NOT NULL و DEFAULT
NOT NULL يعني أن العمود لا يقبل غياب القيمة. استخدمه للحقول الضرورية مثل اسم المنتج وسعره وحالة الطلب. لا تجعل القيم المهمة nullable ثم تحاول إصلاحها في التطبيق.
DEFAULT يعطي قيمة تلقائية عند عدم تمرير العمود. استخدمه عندما تكون القيمة الافتراضية صحيحة تجارياً، مثل active DEFAULT 1 أو status DEFAULT 'draft'. لا تستخدم default لإخفاء بيانات كان يجب أن تأتي من المستخدم.
مثال عملي
الحالة أصبحت draft لأن لها default واضحاً.
DEFAULT VALUES — شكل مختصر للإدراج
يمكن إدراج صف يعتمد كلياً على قيم DEFAULT بصيغة مختصرة:
INSERT INTO orders DEFAULT VALUES;
هذا يعمل فقط عندما لا يوجد أي عمود NOT NULL بلا DEFAULT. إذا أضفت لاحقاً عمود customer_id INTEGER NOT NULL بلا default، سيفشل هذا الأمر لأن قاعدة البيانات لا تعرف ماذا تضع فيه.
-- هذا يفشل إذا كان customer_id NOT NULL بلا DEFAULT
INSERT INTO orders DEFAULT VALUES; -- ERROR: NOT NULL constraint failed
-- الحل: مرر القيمة صراحة
INSERT INTO orders (customer_id) VALUES (1);
الدرس: استخدم DEFAULT VALUES للاختبار فقط، أو في جداول بسيطة تعلم بنيتها. في الإنتاج، مرر الأعمدة المطلوبة صراحة.