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

ما الفرق بين إدخال رقم ونص رقمي في ENUM؟

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

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

مثال

CREATE TABLE pokemon (
  id INT,
  tier ENUM('10', '20', '1')
);
INSERT INTO pokemon VALUES (1, 1), (2, '1');
SELECT id, tier FROM pokemon ORDER BY id;

باختصار: العدد غير المقتبس يحدد فهرس العنصر، بينما النص المطابق يحدد تسمية العنصر نفسها.

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

اختبر نفسك

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