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

كيف أفرض نطاقًا مسموحًا للقيم باستخدام CHECK؟

يستخدم قيد CHECK للتعبير عن شرط يجب أن تحترمه بيانات الصف. مثلًا، يمكن أن تكون أولوية المهمة عددًا من 1 إلى 5 شاملًا الطرفين. هذا الشرط يختلف عن مجرد اختيار نوع INT، لأن النوع يسمح بأعداد كثيرة لا تدخل في المجال الذي تقبله قواعد التطبيق.

في MySQL يبدأ تطبيق قيود CHECK فعليًا من الإصدار 8.0.16. يمكن كتابة النطاق باستخدام BETWEEN، الذي يشمل الحد الأدنى والحد الأعلى. ونضيف NOT NULL إذا كانت الأولوية مطلوبة، حتى يكون السماح بالقيمة المفقودة قرارًا واضحًا ومستقلًا عن شرط النطاق.

مثال

CREATE TABLE tasks (
  id INT PRIMARY KEY,
  priority INT NOT NULL,
  CONSTRAINT chk_tasks_priority
    CHECK (priority BETWEEN 1 AND 5)
);

تُقبل الأولويتان 1 و5، وتُرفض القيمتان 0 و6 عند محاولة تخزينهما. ينطبق القيد على الإدخال وعلى تعديل الصفوف، فلا يمكن تجاوز النطاق بتغيير قيمة موجودة لاحقًا.

باختصار: يفرض CHECK شرط المجال، ويشمل BETWEEN الطرفين، بينما يحدد NOT NULL ضرورة وجود القيمة.

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

اختبر نفسك

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