Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Der MySQL-Spaltentyp TIMESTAMP enthält implizit NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

In MySQL 5.6.5 Es gibt mehrere Aktualisierungen bezüglich dieser Initialisierung, die Sie auf diesem sehen können verlinken (Automatische Zeitstempeleigenschaften vor MySQL 5.6.5).

Wenn Sie MySQL <=5.6.5 verwenden , um diese Initialisierung zu ignorieren, müssen Sie den DEFAULT-Wert auf 0 oder NULL setzen, wobei NULL erlaubt ist.

CREATE TABLE tbl
(
    field1 TIMESTAMP DEFAULT 0,
    field2 TIMESTAMP NULL DEFAULT NULL
)

Wenn Sie MySQL>=5.6.6 verwenden , gibt es einen Parameter namens explicit_defaults_for_timestamp die standardmäßig deaktiviert ist. Sie können diese Einstellung aktivieren oder den DEFAULT-Wert auf 0 oder NULL setzen, dieselbe Vorgehensweise für frühere MySQL-Versionen.

Wenn Sie MySQL>=8.0.2 verwenden , dann explicit_defaults_for_timestamp ist aktiviert standardmäßig. Dies deaktiviert das nicht standardmäßige Verhalten (zum Glück). Außerdem generiert MySQL eine Warnung, wenn Sie diese Einstellung deaktivieren. Also zum Beispiel, wenn Sie keinen DEFAULT-Wert für einen TIMESTAMP definieren Spalte, wird sie automatisch auf NULL gesetzt .