لا يمكن التعامل مع TRUNCATE TABLE في MySQL مثل حذف عادي قابل للتراجع داخل معاملة. فهذا الأمر من أوامر تعريف البيانات ويسبب اعتمادًا ضمنيًا للمعاملة. لذلك لا تعيد كتابة ROLLBACK بعده الصفوف التي أزالها، حتى إذا سبقه أمر START TRANSACTION وكان الجدول يستخدم InnoDB.
يظهر هذا الفرق عند تجربة تنظيف البيانات قبل اتخاذ قرار نهائي. استخدام DELETE داخل معاملة غير معتمدة يمكن أن يسمح بالتراجع، أما استبداله بـ TRUNCATE فيغير سلوك المعاملة. كما قد يؤثر الاعتماد الضمني في تغييرات سابقة كانت معلقة، فلا تقتصر أهمية الأمر على تفريغ الجدول نفسه.
مثال
START TRANSACTION;
TRUNCATE TABLE events;
ROLLBACK;
بعد نجاح التفريغ يظل الجدول فارغًا في هذا المثال. وجود كلمة معاملة في بداية الملف لا يجعل جميع الأوامر اللاحقة قابلة للإلغاء، ولذلك يجب معرفة سلوك كل أمر يستخدم داخله.
باختصار: لا يستعيد ROLLBACK بيانات أزالها TRUNCATE TABLE في MySQL.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.