Aunque hay una respuesta aceptada, no creo que sea la correcta. Es la forma más simple de lograr lo que se necesita, pero incluso si ya está habilitado en InnoDB (en realidad, los documentos le dicen que aún debe obtener NULL ...), si lee documentos de MySQL , incluso en la versión actual (8.0) usando UPDATE_TIME es no es la opción correcta porque:
Las marcas de tiempo no se conservan cuando se reinicia el servidor o cuando se desaloja la tabla de la caché del diccionario de datos InnoDB.
Si entiendo correctamente (no puedo verificarlo en un servidor en este momento), la marca de tiempo se restablece después de reiniciar el servidor.
En cuanto a las soluciones reales (y, bueno, costosas), tiene la solución de Bill Karwin con CURRENT_TIMESTAMP y me gustaría proponer una diferente, que se base en desencadenantes (estoy usando esa).
Comienza creando una tabla separada (o tal vez tenga alguna otra tabla que se pueda usar para este propósito) que funcionará como un almacenamiento para variables globales (aquí las marcas de tiempo). Debe almacenar dos campos: nombre de la tabla (o cualquier valor que desee mantener aquí como id de la tabla) y marca de tiempo. Después de tenerlo, debe inicializarlo con este id de tabla + fecha de inicio (NOW () es una buena opción :)).
Ahora, pasa a las tablas que deseas observar y agrega disparadores DESPUÉS DE INSERTAR / ACTUALIZAR / BORRAR con este procedimiento u otro similar:
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