我正在尝试使用表达式将DATE列添加到具有DEFAULT DATE值的表中:
ALTER TABLE `wp_ezts_project_params` ADD `est_completion` DATE NOT NULL
DEFAULT DATE_ADD( CURRENT_DATE(), INTERVAL 1 MONTH ) AFTER `client_id`
我尝试了几种SQL函数的不同变体,但每次在DATE_ADD
附近都会出现语法错误。
我们不允许在phpMyAdmin中使用表达式作为默认值吗?
答案 0 :(得分:2)
我们不允许在phpMyAdmin中使用表达式作为默认值吗?
是的,不允许这样做。它在manual
中明确说明了这一点数据类型规范中的DEFAULT值子句表示a 列的默认值。除了一个例外,默认值必须 是一个常数;它不能是一个功能或表达。这意味着, 例如,您不能将日期列的默认值设置为 NOW()或CURRENT_DATE等函数的值。例外 是您可以指定CURRENT_TIMESTAMP作为TIMESTAMP的默认值 和DATETIME列
因此,如果您真的想为此列指定一个值,您将a)需要传入该值或b)使用触发器
但实际上你根本不需要这个专栏。这听起来像是存储了一个简单日期添加结果的值 - 存储它意味着您正在引入冗余。只需动态计算即可。