يمكن لقيد CHECK على مستوى الجدول مقارنة أكثر من عمود في الصف نفسه. هذا مفيد عندما تعتمد صحة القيمة على قيمة أخرى، مثل اشتراط ألا يسبق تاريخ انتهاء الحدث تاريخ بدايته. فكل تاريخ قد يكون صالحًا منفردًا، لكن الجمع بينهما قد يخالف ترتيب الأحداث المطلوب.
في MySQL 8.0.16 أو أحدث، يمكن وضع المقارنة ضمن قيد مسمى بعد تعريف الأعمدة. إذا أردنا السماح بحدث يبدأ وينتهي في اليوم نفسه، نستخدم المقارنة >= بدل >. ونعرّف التاريخين باستخدام NOT NULL إذا كان تحديدهما إلزاميًا في كل حدث.
مثال
CREATE TABLE events (
id INT PRIMARY KEY,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
CONSTRAINT chk_events_dates
CHECK (end_date >= start_date)
);
يفحص القيد الترتيب عند إضافة الحدث وعند تعديل أي من التاريخين. لا تحتاج القاعدة إلى معرفة تاريخ اليوم؛ فهي تصف علاقة ثابتة بين قيمتي الصف نفسه.
باختصار: استخدم CHECK على مستوى الجدول لفرض علاقة بين عمودين، واختر المقارنة التي تعبّر بدقة عن السماح بالتساوي أو منعه.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.