MySQL Zeit erstellen und update time timestamp
Erstelle ich einige Tabellen, wo ich will, zum speichern der Zeit, wenn ein Datensatz angelegt wurde und Wann es zuletzt aktualisiert wurde. Ich dachte, ich hätte zwei timestamp Felder, wo man hätte den Wert CURRENT_TIMESTAMP
und die anderen hätten CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
. Aber ich denke, ich kann nicht dies tun, weil Sie können haben nur 1 timestamp-Feld mit Standardwert in einer Tabelle?
Wie würden Sie empfehlen ich erhalten und speichern Sie die beiden Zeiten? Danke!
InformationsquelleAutor Aishwar | 2010-08-15
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie zwei Spalten vom Typ timestamp in einer Tabelle.
Folgende Werke für MySQL 5.0
Ich glaube du verwechselst das mit SQL-Server (wo der timestamp ist nicht wirklich ein "Zeitstempel", und es ist in der Tat eine Begrenzung auf einen einzigen "timestamp" - Spalte)
Edit: Aber du brauchst einen trigger für update der update_at Spalte jedes mal, wenn die Zeile geändert wird.
Dieser würde ausgeführt werden, aber die updated_at Feld nicht autoupdated auf ändern. Ich dachte, hinzufügen von ON UPDATE CURRENT_TIMESTAMP auf die updated_at Spalte würde sich darum kümmern. Das ist, wenn es sich beschwert, dass dies nicht getan werden kann.
Ja, wie gesagt: Sie müssen, verwenden Sie einen trigger zum Auffüllen der updated_at Spalte
InformationsquelleAutor a_horse_with_no_name
Ein guter Weg, um erstellen Sie Felder wie 'erstellt' und 'aktualisiert'
Und die erforderlich sind, um geben Sie null-Werte in beiden Spalten bei "einfügen":
Und jetzt, in aller updates, die 'aktualisierte' Feld einen neuen Wert mit dem tatsächlichen Datum.
Quelle : http://gusiev.com/2009/04/update-and-create-timestamps-with-mysql/
Klappte wunderbar! Obwohl in meiner situation, die ich offenbar nicht übergeben zu müssen, in dem null-Werte und nur die aktualisierte Spalte geändert. Scheint gut zu funktionieren.
created_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
...dies ist die beste Lösung unter allen Antworten hier!! Thanks a lot mate
InformationsquelleAutor albert
Ab MYSQL-version 5.6.5 Sie können dies tun, indem Sie DEFAULT-und ON UPDATE. Keine Trigger benötigt werden.
ts_create
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,ts_update
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPInformationsquelleAutor Dimitry
Soweit ich weiß, gibt es keine Problemumgehung für diese Einschränkung. Sie müssen manuell festlegen (mindestens) einem der Zeitstempel, der einfachste Weg ist, fügen Sie einfach
updated = NOW()
zu denUPDATE
-Abfrage.Könnte möglich sein, mit Trigger, aber ich glaube das ist keine gute Lösung.
Es ist in der Regel getan, Umgekehrt: Sie manuell angeben
created=NOW()
undupdated
automatisch eingestellt. Der Grund dafür ist, dass Sie einen Stammsatz anlegen 1 Zeit, aber updates können unbegrenzt sein.InformationsquelleAutor Guido Hendriks
Benötigen Sie zwei Spalten: CREATE_TIME und UPDATE_TIME.
Möchten Sie vielleicht CREATE_USER und UPDATE_USER.
Vielleicht würden Sie wollen, um eine 1:N-Beziehungen mit dem Namen der Spalte, die geändert, alte und neue Werte.
Es ist alles Teil von change data capture. Könnten Sie CDC-Tabellen, die aktualisiert werden, mithilfe von Triggern.
Es ist üblich, aber ich glaube nicht, dass MySQL hat eine eingebaute Lösung für Sie. Oracle und SQL Server. Sollte nicht schwer zu tun: ein paar Tabellen und Trigger.
InformationsquelleAutor duffymo
Ich würde den aktuellen timestamp die Art und Weise, die Sie vorgeschlagen, und füllen Sie die created_at Feld mit dem aktuellen Datum auf einfügen.
InformationsquelleAutor silvo