Хоча є прийнята відповідь, я не вважаю, що вона є правильною. Це найпростіший спосіб досягти необхідного, але навіть якщо це вже ввімкнено в InnoDB (насправді документи говорять вам, що ви все одно повинні отримати NULL ...), якщо ви читаєте документи MySQL , навіть у поточній версії (8.0) за допомогою UPDATE_TIME є не правильний варіант, тому що:
Часові позначки не зберігаються при перезапуску сервера або при виведенні таблиці з кеша словника даних InnoDB.
Якщо я правильно розумію (зараз не можу перевірити це на сервері), часова марка скидається після перезавантаження сервера.
Що ж стосується реальних (і, ну, дорогих) рішень, у вас є Білл Karwin в рішенні з CURRENT_TIMESTAMP , і я хотів би запропонувати іншу, яка заснована на тригерах (я використовую це один).
Ви починаєте з створення окремої таблиці (або, можливо, у вас є інша таблиця, яка може бути використана для цієї мети), яка буде працювати як сховище для глобальних змінних (тут часові позначки). Вам потрібно зберегти два поля - ім’я таблиці (або будь-яке значення, яке ви хочете зберегти тут як ідентифікатор таблиці) та часову позначку. Після його отримання слід ініціалізувати його з цією таблицею id + дата початку (ЗАРАЗ () - хороший вибір :)).
Тепер ви переходите до таблиць, які ви хочете спостерігати, і додайте тригери ПІСЛЯ ВСТАВЛЕННЯ / ОНОВЛЕННЯ / ВИДАЛЕННЯ за допомогою цієї чи подібної процедури:
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