يمنع القيد NOT NULL تخزين القيمة NULL، لكنه لا يتحقق وحده من أن النص يحتوي على أحرف مفيدة. في MySQL، السلسلة الفارغة '' قيمة نصية معروفة طولها صفر، وهي مختلفة عن NULL التي تعبّر عن غياب القيمة. لذلك يستطيع عمود نصي مطلوب قبول سلسلة فارغة إذا لم يوجد قيد إضافي يمنعها.
هذا الفرق مهم عند تصميم عناوين المهام وأسماء الكتب. قد يرسل نموذج الإدخال نصًا فارغًا بدل إرسال قيمة مفقودة، فينجح الإدخال رغم وجود NOT NULL. لا يكفي اسم القيد لاستنتاج أنه يضمن عنوانًا صالحًا للعرض أو اسمًا ذا معنى للمستخدم.
مثال
CREATE TABLE books (
id INT PRIMARY KEY,
title VARCHAR(100) NOT NULL
);
INSERT INTO books VALUES (1, '');
ينجح المثال لأن العنوان ليس NULL. إذا أردنا منع النص الفارغ أيضًا، فنحتاج إلى قاعدة مستقلة تتحقق من محتوى النص، إلى جانب منع القيمة المفقودة.
باختصار: وجود قيمة نصية لا يعني وجود أحرف؛ يمنع NOT NULL القيمة المفقودة فقط، ولا يمنع السلسلة الفارغة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.