我想增加一列起始日期,其默认值是当前日期(),所以我用下面的命令:
ALTER TABLE添加验证列起始日期日期默认CURDATE ()
但它没有工作,并告诉我它有语法错误。
虽然使用这样的以下命令工作良好:
ALTER TABLE验证添加列起始日期日期默认为0
任何建议表示赞赏。
我想增加一列起始日期,其默认值是当前日期(),所以我用下面的命令:
ALTER TABLE添加验证列起始日期日期默认CURDATE ()
但它没有工作,并告诉我它有语法错误。
虽然使用这样的以下命令工作良好:
ALTER TABLE验证添加列起始日期日期默认为0
任何建议表示赞赏。
从online documentation(我的粗体显示):
在数据类型说明书中的
DEFAULT
值子句表示为列的默认值。有一个例外,默认值必须是是一个常数;它不能是一个函数或表达式。这意味着,例如,不能将日期列的默认值设置为NOW()或CURRENT_DATE等函数的值。
例外是,您可以指定CURRENT_TIMESTAMP作为TIMESTAMP列的默认值。
这就是为什么default 0
工作(一个常数),但default curdate()
不(功能)。
你有(至少)一些可能性来解决这个问题。
首先是使用时间戳列而不是日期列,并将其默认值设置为CURRENT_TIMESTAMP
。不幸的是,这意味着你将不得不在提取它时把它变回日期。
第二种是使用触发器来设置列值,而不是从默认值。例如,使用插入触发器将相关列设置为当前日期。
数据类型规范中的DEFAULT值子句指示列的默认值为 。有一个例外,默认值必须是 是一个常数;它不能是一个函数或表达式。
AHAH,我刚刚张贴同样的确切答案(甚至是“大胆的是我”的一部分!)。你虽然打败了我1分钟,所以我会删除我的 – nico