اختيار TIMESTAMP وحده لا يعني أن العمود يسجل وقت آخر تعديل تلقائيًا في إعدادات MySQL 8 الافتراضية. يجب قراءة تعريف العمود كاملًا، لأن نوع البيانات وسلوك التهيئة والتحديث أمور مختلفة. يساعد التعريف الصريح على جعل السلوك مفهومًا لمن يراجع الجدول بدل الاعتماد على افتراضات من إعدادات أو إصدارات قديمة.
تحدد عبارة DEFAULT CURRENT_TIMESTAMP قيمة تلقائية عند إنشاء صف دون تقديم قيمة للعمود. أما ON UPDATE CURRENT_TIMESTAMP فتحدد تحديثه تلقائيًا عندما تتغير قيمة أخرى في الصف بالفعل. وجود العبارة الأولى وحدها لا يوفر وظيفة العبارة الثانية. كما أن عملية تحديث لا تغير أي قيمة فعلية لا تعني بالضرورة تغيير الطابع الزمني. هذا التفصيل مهم عند بناء أعمدة مثل وقت الإنشاء ووقت آخر تعديل، لأن الخلط بينهما قد يعطي سجلًا زمنيًا غير مطابق لما يتوقعه التطبيق.
مثال
CREATE TABLE tasks (
title VARCHAR(100),
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
);
باختصار: اكتب التهيئة والتحديث التلقائيين صراحة؛ فاسم النوع وحده لا يحدد سلوك وقت آخر تعديل.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.