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

ماذا يحدث عند إدخال قيمة غير موجودة في ENUM؟

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

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

مثال

CREATE TABLE tasks (
  state ENUM('todo', 'done') NOT NULL
);
INSERT INTO tasks (state) VALUES ('todo');

باختصار: في الوضع الصارم، يجب أن تطابق القيمة النصية المدخلة عنصرًا صالحًا من قائمة ENUM.

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

اختبر نفسك

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