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

Wie legen Sie einen Standardwert für eine MySQL Datetime-Spalte fest?

WICHTIGE BEARBEITUNG: Seit MySQL 5.6.5 ist dies jetzt mit DATETIME-Feldern möglich , werfen Sie einen Blick auf den anderen Beitrag unten...

Frühere Versionen können das mit DATETIME nicht...

Aber Sie können es mit TIMESTAMP:

tun
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>

ACHTUNG: WENN Sie eine Spalte mit CURRENT_TIMESTAMP ON als Standard definieren, müssen Sie IMMER einen Wert für diese Spalte angeben oder der Wert wird sich beim Aktualisieren automatisch auf "now()" zurücksetzen. Das bedeutet, wenn Sie nicht möchten, dass sich der Wert ändert, muss Ihre UPDATE-Anweisung "[Ihr Spaltenname] =[Ihr Spaltenname]" (oder einen anderen Wert) enthalten, oder der Wert wird zu "now()". Seltsam, aber wahr. Ich verwende 5.5.56-MariaDB