Mysql
 sql >> Database >  >> RDS >> Mysql

Come si imposta un valore predefinito per una colonna MySQL Datetime?

MODIFICA IMPORTANTE: È ora possibile ottenere questo risultato con i campi DATETIME da MySQL 5.6.5 , dai un'occhiata all'altro post sotto...

Le versioni precedenti non possono farlo con DATETIME...

Ma puoi farlo con 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>

AVVISO: SE si definisce una colonna con CURRENT_TIMESTAMP ON come impostazione predefinita, sarà necessario specificare SEMPRE un valore per questa colonna o il valore verrà automaticamente reimpostato su "now()" durante l'aggiornamento. Ciò significa che se non si desidera modificare il valore, l'istruzione UPDATE deve contenere "[nome della colonna] =[nome della colonna]" (o un altro valore) o il valore diventerà "ora()". Strano, ma vero. Sto usando 5.5.56-MariaDB