ماذا يفعل ON DELETE CASCADE في SQL؟

سهلقراءة دقيقةآخر تحديث 2 أكتوبر 2026

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

الإجابة

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

يقتصر الحذف على الصفوف التابعة المطابقة لقيمة المفتاح المحذوف. لا يحذف جميع صفوف الجدول التابع، ولا يحذف العملاء الآخرين. كذلك لا يعمل الاتجاه بالعكس؛ حذف طلب منفرد لا يؤدي بهذا القيد إلى حذف العميل الذي يملكه.

مثال

CREATE TABLE customers (id INT PRIMARY KEY);
CREATE TABLE orders (
  id INT PRIMARY KEY,
  customer_id INT,
  FOREIGN KEY (customer_id) REFERENCES customers(id)
    ON DELETE CASCADE
);

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

باختصار: يحذف CASCADE الصفوف التابعة للصف الأب المحذوف، ويترك الصفوف المرتبطة بالآباء الآخرين كما هي.

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

اختبر فهمك

ما الصف الذي يعيده SELECT بعد تنفيذ الحذف؟

CREATE TABLE customers (id INT PRIMARY KEY);
CREATE TABLE orders (
  id INT PRIMARY KEY,
  customer_id INT,
  FOREIGN KEY (customer_id) REFERENCES customers(id)
    ON DELETE CASCADE
);
INSERT INTO customers VALUES (1), (2);
INSERT INTO orders VALUES (10, 1), (11, 1), (12, 2);
DELETE FROM customers WHERE id = 1;
SELECT id, customer_id FROM orders ORDER BY id;