شبكة تعلم مع ناو

متى يمنع ON DELETE RESTRICT حذف الصف الأب؟

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

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

مثال

CREATE TABLE countries (id INT PRIMARY KEY);
CREATE TABLE employees (
  id INT PRIMARY KEY,
  country_id INT,
  FOREIGN KEY (country_id) REFERENCES countries(id)
    ON DELETE RESTRICT
);

على خلاف CASCADE، لا يحذف القيد الموظفين تلقائيًا. وعلى خلاف SET NULL، لا يفرغ عمود الدولة. إنه يرفض العملية التي ستترك مراجع غير صالحة.

باختصار: يمنع RESTRICT حذف الأب المشار إليه، ويسمح بحذفه عندما لا توجد صفوف تابعة تعتمد عليه.

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

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.