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

هل يمنع BOOLEAN تخزين العدد 2 في MySQL؟

في MySQL، يعد BOOLEAN اسمًا مرادفًا لنوع TINYINT(1)، وليس نوعًا يفرض بمفرده الاقتصار على قيمتي الصفر والواحد. لذلك يمكن إدخال العدد 2 في عمود معرف باستخدامه، وتبقى القيمة المخزنة هي اثنان. لا يحولها المحرك تلقائيًا إلى واحد لمجرد أن اسم العمود أو نوعه يوحي بحالة منطقية.

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

مثال

CREATE TABLE tasks (
  done BOOLEAN NOT NULL
);
INSERT INTO tasks (done) VALUES (2);
SELECT done FROM tasks;

باختصار: يقبل BOOLEAN العدد 2 في MySQL، ولا يكفي وحده لفرض مجال من قيمتين.

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

اختبر نفسك

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