ما وظيفة WITH CHECK OPTION وما حدودها في MySQL؟

متقدمقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

تضيف عبارة WITH CHECK OPTION شرطًا على الإدخال والتحديث المنفذين عبر عرض قابل للتحديث. يجب أن يظل الصف الناتج مطابقًا لشروط العرض ذات الصلة. فإذا كان العرض يعرض المهام المفتوحة فقط، تمنع هذه العبارة تعديل المهمة عبره إلى حالة تجعلها غير مطابقة لشرط العرض.

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

مثال

CREATE TABLE tasks (
  id INT PRIMARY KEY,
  status VARCHAR(20)
);
CREATE VIEW open_tasks AS
SELECT id, status FROM tasks
WHERE status = 'open'
WITH CHECK OPTION;

يفيد هذا الخيار عندما نريد واجهة تعديل محددة لفئة من الصفوف. وإذا كان المطلوب منع حالة معينة في جميع مسارات الكتابة، نحتاج إلى تصميم قيود وصلاحيات مناسب على مستوى أوسع، ولا نعتمد على العرض وحده لتحقيق ذلك الشرط.

باختصار: يفحص CHECK OPTION التعديلات المارة عبر العرض، ولا يفرض شرط العرض على كل تحديث مباشر للجدول.

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

اختبر فهمك

ما نتيجة الاستعلام الأخير رغم وجود WITH CHECK OPTION؟

CREATE TABLE tasks (
  id INT PRIMARY KEY,
  status VARCHAR(20)
);
INSERT INTO tasks VALUES (1, 'open'), (2, 'open');
CREATE VIEW open_tasks AS
SELECT id, status FROM tasks
WHERE status = 'open'
WITH CHECK OPTION;
UPDATE tasks SET status = 'done' WHERE id = 1;
SELECT id, status FROM open_tasks ORDER BY id;