Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le type de colonne MySQL TIMESTAMP inclut implicitement NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Dans MySQL 5.6.5 il y a plusieurs mises à jour concernant cette initialisation, vous pouvez voir sur ce lien (Propriétés d'horodatage automatique avant MySQL 5.6.5).

Si vous utilisez MySQL <=5.6.5 , afin d'ignorer cette initialisation, vous devez définir la valeur DEFAULT sur 0 ou NULL avec NULL autorisé.

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

Si vous utilisez MySQL>=5.6.6 , il y a un paramètre appelé explicit_defaults_for_timestamp qui est désactivé par défaut. Vous pouvez activer ce paramètre ou définir la valeur DEFAULT sur 0 ou NULL, même approche pour les versions précédentes de MySQL.

Si vous utilisez MySQL>=8.0.2 , puis explicit_defaults_for_timestamp est activé par défaut. Cela désactive le comportement non standard (heureusement). De plus, MySQL génère un avertissement lorsque vous désactivez ce paramètre. Ainsi, par exemple, si vous ne définissez pas la valeur DEFAULT pour un TIMESTAMP colonne, elle est automatiquement définie sur NULL .