ВАЖНА РЕДАКТИРАНЕ: Вече е възможно да се постигне това с полета DATETIME след MySQL 5.6.5 , разгледайте друга публикация по-долу...
Предишните версии не могат да направят това с DATETIME...
Но можете да го направите с 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>
ПРЕДУПРЕЖДЕНИЕ: АКО дефинирате колона с CURRENT_TIMESTAMP ON по подразбиране, ще трябва ВИНАГИ да посочите стойност за тази колона или стойността автоматично ще се нулира до „now()“ при актуализиране. Това означава, че ако не искате стойността да се променя, вашият оператор UPDATE трябва да съдържа "[името на колоната ви] =[името на колоната ви]" (или някаква друга стойност) или стойността ще стане "сега()". Странно, но вярно. Използвам 5.5.56-MariaDB