CURDATE()导致语法错误

Mar*_* Ma 5 mysql database

大家

我想添加一个列start_date,其默认值是当前日期(),所以我使用以下命令:

alter table validation添加列start_date日期默认值CURDATE()

但它没有用,并告诉我它有语法错误.

使用以下命令时效果很好:

alter table validation添加列start_date日期默认值为0

任何建议表示赞赏.

pax*_*blo 10

在线文档(我的粗体):

DEFAULT数据类型规范中的value子句指示列的默认值.除了一个例外,默认值必须是常量; 它不能是一个功能或表达.

这意味着,例如,您不能将日期列的默认值设置为函数的值,例如NOW()或CURRENT_DATE.

例外情况是您可以将CURRENT_TIMESTAMP指定为TIMESTAMP列的默认值.

这就是为什么default 0工作(一个常数)但default curdate()不工作(一个函数).

你(至少)有几种可能来解决这个问题.

第一种是使用时间戳列而不是日期列,并将其默认值设置为CURRENT_TIMESTAMP.不幸的是,这意味着您必须将其转换回提取日期.

第二种是使用触发器来设置列值,而不是使用默认值.例如,使用插入触发器将相关列设置为当前日期.