Хотя есть принятый ответ, я не чувствую, что он правильный. Это самый простой способ достичь того, что нужно, но даже если он уже включен в InnoDB (на самом деле документы говорят вам, что вы все равно должны получить NULL ...), если вы читаете MySQL docs , даже в текущей версии (8.0) использование UPDATE_TIME не является правильным вариантом, потому что:
Метки времени не сохраняются при перезапуске сервера или когда
таблица извлекается из кэша словаря данных InnoDB.
Если я правильно понимаю (не могу проверить это на сервере прямо сейчас), отметка времени сбрасывается после перезапуска сервера.
Что касается реальных (и, конечно, дорогостоящих) решений, у вас есть решение Билла Карвина с 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