يحدد 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 من الأساسيات للاحتراف.