MySQL使用DATE_ADD为DATE列设置默认值?

时间:2017-03-22 04:49:39

标签: mysql

我正在尝试使用表达式将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中使用表达式作为默认值吗?

1 个答案:

答案 0 :(得分:2)

  

我们不允许在phpMyAdmin中使用表达式作为默认值吗?

是的,不允许这样做。它在manual

中明确说明了这一点
  

数据类型规范中的DEFAULT值子句表示a   列的默认值。除了一个例外,默认值必须   是一个常数;它不能是一个功能或表达。这意味着,   例如,您不能将日期列的默认值设置为   NOW()或CURRENT_DATE等函数的值。例外   是您可以指定CURRENT_TIMESTAMP作为TIMESTAMP的默认值   和DATETIME列

因此,如果您真的想为此列指定一个值,您将a)需要传入该值或b)使用触发器

但实际上你根本不需要这个专栏。这听起来像是存储了一个简单日期添加结果的值 - 存储它意味着您正在引入冗余。只需动态计算即可。