2017-03-22 31 views
1

我試圖DATE列添加到我的表使用表達式默認的日期值:MySQL使用DATE_ADD爲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

你不能在alter table中使用'DATE_ADD' – nogad

+0

還記得phpMyAdmin不是數據庫 – nogad

回答

1

我們不允許在phpMyAdmin中使用表達式作爲默認值嗎?

是的,這是不允許的。它在數據類型規範​​

的默認值子句中顯式聲明表明了列 默認值。有一個例外,默認值必須是 是一個常數;它不能是一個函數或表達式。這意味着,例如, ,例如,您不能將日期列的默認值設置爲 函數的值,例如NOW()或CURRENT_DATE。唯一的例外 是,你可以指定CURRENT_TIMESTAMP爲默認的TIMESTAMP 和DATETIME列

所以,如果你真的想轉讓此列你會)需要通過在或b)使用的值觸發器

但實際上你根本不需要這個列。這聽起來像是你存儲的是一個簡單日期添加的結果 - 存儲它意味着你正在引入冗餘。簡單地計算它。

+0

好的,謝謝。這解釋了它。 –