Obwohl es eine akzeptierte Antwort gibt, glaube ich nicht, dass es die richtige ist. Es ist der einfachste Weg, um das zu erreichen, was benötigt wird, aber selbst wenn es bereits in InnoDB aktiviert ist (tatsächlich sagen Ihnen die Dokumente, dass Sie immer noch NULL erhalten sollten ...), wenn Sie MySQL- Dokumente lesen , ist dies auch in der aktuellen Version (8.0) mit UPDATE_TIME der Fall nicht die richtige Option, weil:
Zeitstempel bleiben nicht erhalten, wenn der Server neu gestartet wird oder wenn die Tabelle aus dem InnoDB-Datenwörterbuch-Cache entfernt wird.
Wenn ich das richtig verstehe (kann es derzeit auf einem Server nicht überprüfen), wird der Zeitstempel nach dem Neustart des Servers zurückgesetzt.
Für echte (und auch kostspielige) Lösungen haben Sie die Lösung von Bill Karwin mit CURRENT_TIMESTAMP und ich möchte eine andere vorschlagen, die auf Triggern basiert (ich verwende diese).
Sie erstellen zunächst eine separate Tabelle (oder haben möglicherweise eine andere Tabelle, die für diesen Zweck verwendet werden kann), die wie ein Speicher für globale Variablen (hier Zeitstempel) funktioniert. Sie müssen zwei Felder speichern - Tabellenname (oder welchen Wert Sie hier als Tabellen-ID behalten möchten) und Zeitstempel. Nachdem Sie es haben, sollten Sie es mit dieser Tabellen-ID + Startdatum initialisieren (NOW () ist eine gute Wahl :)).
Nun wechseln Sie zu Tabellen, die Sie beobachten möchten, und fügen Trigger NACH EINFÜGEN / UPDATE / LÖSCHEN mit diesem oder einem ähnlichen Verfahren hinzu:
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