شرح صفوف ومحتوى الفقرة
تخيّل عرضاً باسم v_riyadh_branches يحمل الشرط WHERE city = 'Riyadh'. إذا لم تضع قيد حماية على هذا العرض، فبإمكان المستخدم تنفيذ UPDATE v_riyadh_branches SET city = 'Jeddah' WHERE branch_id = 10! سينفذ MySQL التعديل في الجدول الأصلي، لكن المفاجأة أن الصف رقم 10 سيختفي فوراً من العرض (مشكلة الصفوف المتلاشية Vanishing Rows)، بل ويمكن للمستخدم إدراج فرع في مدينة الدمام عبر عرض فروع الرياض!
لإغلاق هذه الثغرة المنطقية، نُلحق العبارة WITH CHECK OPTION في نهاية تعريف العرض؛ فتلزم محرك MySQL بفحص كل عملية INSERT أو UPDATE والتأكد من أن الصف الناتج بعد التعديل لا يزال يحقق شرط WHERE الخاص بالعرض، وإلا يُرفض التعديل بالخطأ ERROR 1369 (HY000): CHECK OPTION failed.
SQL
CREATE OR REPLACE VIEW v_riyadh_branches AS ... WITH CHECK OPTION;