2010-11-21 68 views
8

我有一個表,如下圖所示:如何在mysql中創建計算字段?

create table info (username varchar(30),otherinfo varchar(100)); 

現在我想改變這個表格有新的領域,這個領域必須有默認值像下面

md5(username) 

東西:

alter table info add NewField varchar(100) default md5(username); 

該怎麼辦?
感謝您的幫助

回答

18

每MySQL的docs(強調)你不能有一個默認值的表達式:

10.1.4。數據類型默認值

數據 類型規範中的DEFAULT值子句指示列的默認值 值。有一個 例外,的默認值必須是 常數;它不能是一個功能或 的一個表達式。這意味着,對於 示例,您不能將日期列的默認值設置爲 ,例如NOW()或 CURRENT_DATE。例外是 您可以指定CURRENT_TIMESTAMP爲 TIMESTAMP列的默認值。

我測試過,下面的觸發適用於你的意圖:

CREATE TRIGGER MyTriggerName 
    BEFORE INSERT ON info 
    FOR EACH ROW 
    SET NEW.NewField = md5(NEW.username); 
相關問題