Sebbene ci sia una risposta accettata, non penso che sia quella giusta. È il modo più semplice per ottenere ciò che è necessario, ma anche se già abilitato in InnoDB (in realtà i documenti ti dicono che dovresti comunque ottenere NULL ...), se leggi i documenti MySQL , anche nella versione corrente (8.0) usando UPDATE_TIME è non è l'opzione giusta, perché:
I timestamp non persistono quando il server viene riavviato o quando la tabella viene eliminata dalla cache del dizionario dei dati InnoDB.
Se capisco correttamente (non riesco a verificarlo su un server in questo momento), il timestamp viene resettato dopo il riavvio del server.
Per quanto riguarda le soluzioni reali (e, beh, costose), hai la soluzione di Bill Karwin con CURRENT_TIMESTAMP e mi piacerebbe proporne una diversa, che si basa su trigger (sto usando quella).
Si inizia creando una tabella separata (o forse si dispone di un'altra tabella che può essere utilizzata per questo scopo) che funzionerà come una memoria per le variabili globali (qui i timestamp). Devi archiviare due campi: il nome della tabella (o qualunque valore desideri conservare qui come ID tabella) e il timestamp. Dopo averlo, dovresti inizializzarlo con questo ID tabella + data di inizio (NOW () è una buona scelta :)).
Ora, passi alle tabelle che desideri osservare e aggiungi i trigger DOPO INSERIRE / AGGIORNA / ELIMINA con questa o una procedura simile:
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