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

Comment définissez-vous une valeur par défaut pour une colonne MySQL Datetime ?

MODIFICATION IMPORTANTE : Il est maintenant possible d'y parvenir avec les champs DATETIME depuis MySQL 5.6.5 , jetez un oeil à l'autre message ci-dessous...

Les versions précédentes ne peuvent pas faire cela avec DATETIME...

Mais vous pouvez le faire avec TIMESTAMP :

mysql> create table test (str varchar(32), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.00 sec)

mysql> desc test;
+-------+-------------+------+-----+-------------------+-------+
| Field | Type        | Null | Key | Default           | Extra |
+-------+-------------+------+-----+-------------------+-------+
| str   | varchar(32) | YES  |     | NULL              |       | 
| ts    | timestamp   | NO   |     | CURRENT_TIMESTAMP |       | 
+-------+-------------+------+-----+-------------------+-------+
2 rows in set (0.00 sec)

mysql> insert into test (str) values ("demo");
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+------+---------------------+
| str  | ts                  |
+------+---------------------+
| demo | 2008-10-03 22:59:52 | 
+------+---------------------+
1 row in set (0.00 sec)

mysql>

MISE EN GARDE : SI vous définissez une colonne avec CURRENT_TIMESTAMP ON par défaut, vous devrez TOUJOURS spécifier une valeur pour cette colonne ou la valeur se réinitialisera automatiquement à "now()" lors de la mise à jour. Cela signifie que si vous ne voulez pas que la valeur change, votre instruction UPDATE doit contenir "[votre nom de colonne] =[votre nom de colonne]" (ou une autre valeur) ou la valeur deviendra "maintenant()". Bizarre, mais vrai. J'utilise 5.5.56-MariaDB