شرح صفوف ومحتوى الفقرة
بدءاً من إصدار MySQL 8.0.16، أصبح محرك InnoDB يطبق قيد التحقق الشرطي CHECK فعلياً بعد أن كانت الإصدارات الأقدم تتجاهله. يفحص قيد CHECK تعبيراً منطقياً على كل صف جديد أو معدَّل، ويرفض العملية فوراً بالخطأ القياسي Error 3819 (HY000): Check constraint is violated إذا كانت نتيجة الشرط FALSE:
- حماية منطق الأعمال داخل القاعدة: يمنع تخزين أسعار سالبة أو نسب خصم تتجاوز 100% أو أعمار غير منطقية حتى لو حدث خطأ في كود الواجهة الخلفية.
- المرونة على مستوى العمود أو الجدول: يمكن كتابته لفحص عمود واحد أو المقارنة بين عدة أعمدة داخل نفس السجل.
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)
);