انتقل إلى محتوى الدرس

Enforcing Domain Rules with CHECK فرض الشروط المنطقية بقيد CHECK

تعلّم قيد التحقق الشرطي CHECK على قيم الصفوف في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

بدءاً من إصدار MySQL 8.0.16، أصبح محرك InnoDB يطبق قيد التحقق الشرطي CHECK فعلياً بعد أن كانت الإصدارات الأقدم تتجاهله. يفحص قيد CHECK تعبيراً منطقياً على كل صف جديد أو معدَّل، ويرفض العملية فوراً بالخطأ القياسي Error 3819 (HY000): Check constraint is violated إذا كانت نتيجة الشرط FALSE:

  • حماية منطق الأعمال داخل القاعدة: يمنع تخزين أسعار سالبة أو نسب خصم تتجاوز 100% أو أعمار غير منطقية حتى لو حدث خطأ في كود الواجهة الخلفية.
  • المرونة على مستوى العمود أو الجدول: يمكن كتابته لفحص عمود واحد أو المقارنة بين عدة أعمدة داخل نفس السجل.
مخطط يوضح قيد التحقق الشرطي CHECK على العمود والمقارنة بين عمودين ومنطق التقييم الثلاثي مع NULL في MySQL 8
SQL
CREATE TABLE products (
    product_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    title VARCHAR(120) NOT NULL,
    unit_price DECIMAL(10, 2) NOT NULL CHECK (unit_price > 0),
    discount_pct TINYINT UNSIGNED NOT NULL DEFAULT 0
        CHECK (discount_pct <= 80),
    PRIMARY KEY (product_id)
);