قد يفشل TRUNCATE TABLE لجدول InnoDB تشير إليه علاقة مفتاح أجنبي من جدول آخر، حتى لو كان الجدول التابع فارغًا. يرتبط هذا المنع بوجود القيد الذي يشير إلى الجدول، وليس فقط بوجود صفوف تابعة تحمل مراجع فعلية وقت تنفيذ الأمر.
لنفترض أن جدول الطلبات يشير إلى جدول العملاء. حذف جميع الطلبات لا يزيل تعريف العلاقة من قاعدة البيانات. لذلك لا تصبح محاولة تفريغ جدول العملاء باستخدام TRUNCATE مسموحة تلقائيًا. وينبغي التمييز بين إزالة بيانات الجدول التابع وإزالة القيد نفسه، فهما عمليتان مختلفتان تمامًا ولهما آثار مختلفة.
مثال
DELETE FROM orders;
DELETE FROM customers;
يمكن أن يكون الحذف بهذا الترتيب مناسبًا لتفريغ الجدولين مع إبقاء العلاقة، إذا لم توجد علاقات أخرى تمنع ذلك. لا ينصح باعتبار تعطيل فحص المفاتيح حلًا تلقائيًا، لأن الحفاظ على اتساق البيانات جزء من تصميم العملية.
باختصار: وجود مفتاح أجنبي من جدول آخر قد يمنع TRUNCATE للأصل ولو كان التابع فارغًا.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.