Ich habe einen Zeitstempel in einer MySQL-Tabelle mit dem Attribut "ON UPDATE CURRENT_TIMESTAMP". Gibt es eine Möglichkeit, die Aktualisierung des Zeitstempels zu besonderen Anlässen manuell zu deaktivieren? (zB: Aktualisieren des Eintrags, um einen Blog-Beitrag zu überarbeiten, aber nicht zu aktualisieren)
76
last_updated
FeldON UPDATE CURRENT_TIMESTAMP
wie gewohnt aktualisieren möchte ( Verhalten beibehalten), außer wenn die Aktualisierung nur für eine bestimmte Spalte durchgeführt wurde ? Eigentlich modelliere ich eine Metadaten-Datenbank, um Informationen über bestimmtecron
s (deren Quelle, Senke, last_completion_time ) beizubehalten . Alsolast_updated
muss das Feld nur aktualisiert werden, wenn das Cron tatsächlich geändert wurde (und nicht, wenn das Cron-last_completion_time
Feld aktualisiert wurde)Sie können den Wert der Spalte im Aktualisierungsbefehl manuell auf den aktuellen Wert setzen:
UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;
Wenn Sie den Wert in der Abfrage nicht festlegen, wird er gemäß der Tabellendefinition auf den aktuellen Zeitstempel aktualisiert.
quelle
ON UPDATE
,NOW()
all seine anderen Abfragen zu ergänzen und seine App erneut zu testen?DEFAULT
Wert zu entfernen ; nur dieON UPDATE
So aktualisieren Sie Ihre Tabelle / Ihren Zeitstempel automatisch:
ALTER TABLE myTable CHANGE myTimestampColumn myTimestampColumn TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
Damit es nicht automatisch aktualisiert wird:
ALTER TABLE myTable CHANGE myTimestampColumn myTimestampColumn TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
HINWEIS: Der Teil "default current_timestamp" setzt ihn nur zur Standardzeit auf den aktuellen Stempel, da das Feld nicht null ist. Sie können sowohl die Nicht-Null als auch die Standardeinstellung entfernen, wenn Sie möchten.
quelle
Verwenden Sie keine Zeitstempel, sondern verfolgen Sie die Zeiten manuell.
Wenn Sie einen Datensatz wirklich aktualisieren möchten und seinen Zeitstempel nicht aktualisieren möchten, verwenden Sie:
UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
quelle
Wenn Sie den Zeitstempel bei der Aktualisierung ändern, müssen Sie berücksichtigen, dass der Wert "bei Aktualisierung Current_timestemp" nicht aktualisiert wird, wenn der Wert aktualisiert, aber nicht geändert wurde (Aktualisierung des Speicherwerts). In diesem Fall sollten Sie den Zeitstempel festlegen manuell
SET LastUpdatedDate=NOW() WHERE
Die Idee kam von hier: Berühren Sie den MYSQL-Datensatz, um das TIMESTAMP-Feld zu aktualisieren
quelle