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?
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
Wenn Sie phpmyadmin verwenden, können Sie dies folgendermaßen tun:
ALTER TABLE `tablename` CHANGE `dt` `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
sollte der richtige Code sein.
Nun, Sie können nicht beides haben:
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.
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.
In phpmyadmin können Sie .__ einstellen.
ODER Verwenden Sie diese Abfrage
ALTER TABLE `tablename`
CHANGE `dt_created` `dt_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP