Bien qu'il y ait une réponse acceptée, je ne pense pas que ce soit la bonne. C'est le moyen le plus simple de réaliser ce qui est nécessaire, mais même s'il est déjà activé dans InnoDB (en fait, les documents vous disent que vous devriez toujours obtenir NULL ...), si vous lisez des documents MySQL , même dans la version actuelle (8.0) en utilisant UPDATE_TIME est pas la bonne option, car:
Les horodatages ne sont pas conservés lorsque le serveur est redémarré ou lorsque la table est expulsée du cache du dictionnaire de données InnoDB.
Si je comprends bien (je ne peux pas le vérifier sur un serveur pour le moment), l'horodatage est réinitialisé après le redémarrage du serveur.
En ce qui concerne les solutions réelles (et, enfin, coûteuses), vous avez la solution de Bill Karwin avec CURRENT_TIMESTAMP et j'aimerais en proposer une différente, basée sur des déclencheurs (j'utilise celui-là).
Vous commencez par créer une table séparée (ou peut-être avez-vous une autre table qui peut être utilisée à cet effet) qui fonctionnera comme un stockage pour les variables globales (ici les horodatages). Vous devez stocker deux champs: le nom de la table (ou la valeur que vous souhaitez conserver ici en tant qu'ID de table) et l'horodatage. Une fois que vous l'avez, vous devez l'initialiser avec cet identifiant de table + date de début (NOW () est un bon choix :)).
Maintenant, vous passez aux tables que vous souhaitez observer et ajoutez des déclencheurs APRÈS INSERT / UPDATE / DELETE avec cette procédure ou une procédure similaire:
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