wake-up-neo.com

MySQL speichert Datumszeit für jede Zeile automatisch

In MySQL habe ich es satt, die Spalten dt_created und dt_modified (Datumsstempel für die Erstellung bzw. letzte Änderung) zu allen Tabellen hinzuzufügen, die ich in meiner Datenbank habe.

Jedes Mal, wenn ich die Datenbank INSERT oder UPDATE, muss ich das Schlüsselwort NOW() verwenden. Das geht über meine Ausdauer. 

Gibt es eine effiziente Alternative, bei der MySQL mindestens die Datumszeit der eingefügten Zeile automatisch speichern kann und von mir abgerufen werden kann?

41
mauris

Sie können DEFAULT-Einschränkungen verwenden, um den Zeitstempel festzulegen:

ALTER TABLE
 MODIFY dt_created datetime DEFAULT CURRENT_TIMESTAMP

ALTER TABLE
 MODIFY dt_modified datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Dann müssten Sie in Ihren INSERT/UPDATE-Anweisungen nicht NOW() angeben.

Referenz: TIMESTAMP Eigenschaften

73
OMG Ponies

Wenn Sie phpmyadmin verwenden, können Sie dies folgendermaßen tun:

enter image description here

10
Ouadie
ALTER TABLE  `tablename` CHANGE  `dt`  `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

sollte der richtige Code sein.

7
Kim Stacks

Nun, Sie können nicht beides haben:

mysql doc:

Es ist nicht möglich, dass der aktuelle Zeitstempel der Standardwert für eine Spalte und der Auto-Update-Wert für eine andere Spalte ist. 

Traurig, nicht wahr?

Sie könnten jedoch anstelle von now () diesem Tipp folgen verwenden.

3
ggd

Eine ähnliche Frage wurde hier gestellt " Timestamp für MySQL " Das Timestamp-Feld wird bei jedem Zugriff aktualisiert. Sie können auch einen Auslöser in die betreffende Tabelle einfügen, um diese Felder automatisch auszufüllen. Abhängig von der Umgebung mögen einige Geschäfte/Geschäfte keine Auslöser. Daher müssen Sie möglicherweise alternative Problemlösungen finden.

1
GrayWizardx

In phpmyadmin können Sie .__ einstellen.enter image description here

ODER Verwenden Sie diese Abfrage

ALTER TABLE  `tablename`
    CHANGE  `dt_created`  `dt_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
0
user3110005