mysql 中无法设置默认值为函数或者表达式,如果你强制设置时,就会报错误:#1067 - Invalid default value。
这不是mysql的bug,而是故意这么设计的。参看:
http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
这里写道:
"The DEFAULT value clause in a data type specification indicates a default value for a
column. With one exception, the default value must be a constant; it cannot be a function
or an expression. This means, for example, that you cannot set the default for a date
column to be the value of a function such as NOW() or CURRENT_DATE."
简单来说就是默认值不能是函数和表达式,所有才有上面的错误信息。
下面是一个例子,不使用函数和表达式的默认值:
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>
参考资料:
Date and Time Function
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html