2016-05-31 9 views
0

Ich habe eine Tabelle mit zwei Timestamp-Feldern. Sie sind nicht nullfähig. Das Problem ist, dass wenn ich Null in diese Felder einfüge, das aktuelle Datum automatisch gespeichert wird, anstatt einen Fehler zu werfen, der sagt "Spalte 'first_data_dt' kann nicht null sein", genau wie es passiert, wenn ich einen Wert in ein anderes nicht-nullbares Feld einfüge .MySQL setzt das Feld auf das aktuelle Datum, wenn der Wert null ist

Mit dieser Tabelle sind keine Trigger verknüpft.

Weiß jemand, warum das passiert?

EDIT Tabellendefinition hinzufügen:

CREATE TABLE `ui_mytable` (

    `id` int(11) NOT NULL, 

    `first_data_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 

    `last_data_dt` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' 

) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

ich jetzt verstehen, warum first_data_dt zu den aktuellen Zeitstempel zu jeder Zeit aktualisiert wird, ich null einfügen. Aber was ist mit last_data_dt?

+2

hat das Feld einen Standardwert? – jbe

+2

Freigegebene Tabellendefinition –

+1

Standardwert setzen currentTimeStamp –

Antwort

2

Das ist, was eine TIMESTAMP-Spalte tut:

Die Zeitstempel-Datentyp bietet eine automatische Initialisierung und Aktualisierung auf das aktuelle Datum und die Uhrzeit (das heißt, der aktuelle Zeitstempel). [...] Sie können jede TIMESTAMP-Spalte auf das aktuelle Datum und die aktuelle Uhrzeit initialisieren oder aktualisieren, indem Sie ihr einen NULL-Wert zuweisen, sofern sie nicht mit dem NULL-Attribut definiert wurde, um NULL-Werte zuzulassen.

Quelle: MySQL documentation

Vielleicht möchten Sie stattdessen eine DATETIME- benutzen?

+0

Vielen Dank! Ich hatte bereits einen kurzen Blick darauf geworfen, ich schätze, ich habe nicht genug darauf geachtet :(Dieser Satz sagt alles: "Außerdem können Sie jede TIMESTAMP-Spalte auf das aktuelle Datum und die aktuelle Uhrzeit initialisieren oder aktualisieren, indem Sie ihr einen NULL-Wert zuweisen. es sei denn, es wurde mit dem NULL-Attribut definiert, um NULL-Werte zuzulassen. " Nochmals vielen Dank! – Neets

Verwandte Themen