Хотя есть принятый ответ, я не чувствую, что он правильный. Это самый простой способ достичь того, что нужно, но даже если он уже включен в InnoDB (на самом деле документы говорят вам, что вы все равно должны получить NULL ...), если вы читаете документы MySQL , даже в текущей версии (8.0) использование UPDATE_TIME не правильный вариант, потому что:
Метки времени не сохраняются при перезапуске сервера или при удалении таблицы из кэша словаря данных InnoDB.
Если я правильно понимаю (не могу проверить это на сервере прямо сейчас), метка времени сбрасывается после перезапуска сервера.
Что же касается реальных (и, ну, дорогих) решений, у вас есть Билл Karwin в решении с CURRENT_TIMESTAMP , и я хотел бы предложить другую, которая основана на триггерах (я использую это один).
Вы начинаете с создания отдельной таблицы (или, может быть, у вас есть какая-то другая таблица, которая может быть использована для этой цели), которая будет работать как хранилище для глобальных переменных (здесь отметки времени). Вам нужно сохранить два поля - имя таблицы (или любое другое значение, которое вы хотите сохранить здесь в качестве идентификатора таблицы) и метку времени. После того, как он у вас есть, вы должны инициализировать его с этим идентификатором таблицы + дата начала (NOW () - хороший выбор :)).
Теперь вы перемещаетесь в таблицы, которые хотите наблюдать, и добавляете триггеры ПОСЛЕ ВСТАВКИ / ОБНОВЛЕНИЯ / УДАЛЕНИЯ с помощью этой или аналогичной процедуры:
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