যদিও এখানে একটি স্বীকৃত উত্তর রয়েছে তবে আমি অনুভব করি না যে এটি সঠিক। এটি যা প্রয়োজন তা অর্জন করার সহজতম উপায়, তবে ইতিমধ্যে InnoDB- তে সক্ষম থাকলেও (প্রকৃতপক্ষে ডক্স আপনাকে জানায় যে আপনাকে এখনও NULL পাওয়া উচিত ...), যদি আপনি মাইএসকিউএল ডক্সগুলি পড়েন , এমনকি ইউপিডিটিফলটাইম ব্যবহার করে বর্তমান সংস্করণে (8.0) হ'ল সঠিক বিকল্প নয়, কারণ:
যখন সার্ভারটি পুনরায় চালু হবে বা যখন টেবিলটি InnoDB ডেটা অভিধান ক্যাশে থেকে উচ্ছেদ করা হবে তখন টাইমস্ট্যাম্পগুলি স্থির থাকে না।
যদি আমি সঠিকভাবে বুঝতে পারি (এখনই এটি কোনও সার্ভারে যাচাই করতে পারে না), টাইমস্ট্যাম্প সার্ভার পুনরায় চালু হওয়ার পরে পুনরায় সেট হয়ে যায়।
আসল (এবং, ভাল, ব্যয়বহুল) সমাধানগুলির জন্য, আপনার কাছে CURRENT_TIMESTAMP এর সাথে বিল কার্বিনের সমাধান রয়েছে এবং আমি একটি ভিন্ন প্রস্তাব করতে চাই, এটি ট্রিগারগুলির উপর ভিত্তি করে (আমি এটি ব্যবহার করছি)।
আপনি একটি পৃথক টেবিল তৈরি করে শুরু করেন (বা সম্ভবত আপনার কাছে অন্য কোনও টেবিল রয়েছে যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে) যা বিশ্বব্যাপী ভেরিয়েবলগুলির জন্য স্টোরেজের মতো কাজ করবে (এখানে টাইমস্ট্যাম্পস)। আপনাকে দুটি ক্ষেত্র সংরক্ষণ করতে হবে - টেবিলের নাম (বা যে মানটি আপনি এখানে টেবিল আইডি হিসাবে রাখতে চান) এবং টাইমস্ট্যাম্প। আপনার কাছে এটি পাওয়ার পরে, আপনি এই টেবিল আইডি + শুরুর তারিখ (এখনই) একটি ভাল পছন্দ :)) দিয়ে এটি শুরু করতে হবে।
এখন, আপনি যে টেবিলগুলিতে পর্যবেক্ষণ করতে চান এবং সারণি / আপডেট / পরে এই বা অনুরূপ পদ্ধতিটি মুছে ফেলুন সেগুলি যোগ করতে চান:
CREATE PROCEDURE `timestamp_update` ()
BEGIN
UPDATE `SCHEMA_NAME`.`TIMESTAMPS_TABLE_NAME`
SET `timestamp_column`=DATE_FORMAT(NOW(), '%Y-%m-%d %T')
WHERE `table_name_column`='TABLE_NAME';
END