DŮLEŽITÁ ÚPRAVA: Toho je nyní možné dosáhnout pomocí polí DATETIME od MySQL 5.6.5 , podívejte se na další příspěvek níže...
Předchozí verze to s DATETIME...
neumíAle můžete to udělat pomocí 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>
UPOZORNĚNÍ: Jestliže definujete sloupec se ZAPNUTÝM CURRENT_TIMESTAMP jako výchozím nastavením, budete muset VŽDY zadat hodnotu pro tento sloupec, jinak se při aktualizaci automaticky nastaví na "now()". To znamená, že pokud nechcete, aby se hodnota změnila, váš příkaz UPDATE musí obsahovat "[název vašeho sloupce] =[název vašeho sloupce]" (nebo nějakou jinou hodnotu), jinak se hodnota změní na "now()". Zvláštní, ale pravdivé. Používám 5.5.56-MariaDB