2016-02-13 31 views
1

DEFAULT約束在接受字符串或當前日期值時沒有問題。我需要的是每創建一個實體時都會創建一個隨機4位數的約束。我嘗試了下面的代碼,但它返回一個語法錯誤。如何使用DEFAULT Constraint爲mysql中的列創建隨機數?

ALTER TABLE client_number ADD(code INT(4)DEFAULT FLOOR(RAND()* 9999)+1111);

上述語句返回以下錯誤:

#1064 - 你在你的SQL語法錯誤;檢查與您的MySQL服務器版本對應的手冊,以便在第1行的'floor(rand()* 9999)+1111)'附近使用正確的語法。

需要解決方案。

回答

1

這太長了評論。

documentation是相當清楚的:

The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression.

你的表達是不恆定的,所以這是行不通的。您需要改用觸發器。

+0

謝謝你,但是有沒有辦法在插入時在sql裏面生成隨機的4位數字? –

+0

@MeghashyamBhandary。 。 。你需要使用觸發器。但爲什麼不自動增量列工作? –

+0

自動增量僅將值增加1並將其輸入到列中。我需要一個1111和9999之間的隨機數。 –