我使用的是MySQL (没有人是完美的) 4.1版,我习惯于这样定义一些时间戳列:
ALTER TABLE foo ADD creation TIMESTAMP DEFAULT NOW() ;我想做完全相同的事情,除了日期字段。原因是我不需要时间戳精度,而且因为MySQL中不存在函数索引,所以我无法快速访问具有给定日期的行(无论是哪一天的时间)。因此,我尝试了以下方法,但就是不起作用:
ALTER TABLE foo ADD creation_date DATE DEFAULT CURDATE() ;
ERROR 1067 (42000): Invalid default value for 'creation_date'甚至是
ALTER TABLE foo ADD creation_date DATE DEFAULT DATE(NOW()) ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(now())' at line 1这也不起作用。
有什么想法吗?
发布于 2009-07-29 09:29:27
在MySQL中,默认值必须是常量。不允许使用函数或表达式。
例外情况是TIMESTAMP类型,对于该类型,CURRENT_TIMESTAMP是一个有效的非常量默认值。
https://stackoverflow.com/questions/1198977
复制相似问题