我有一個表,如下圖所示:如何在mysql中創建計算字段?
create table info (username varchar(30),otherinfo varchar(100));
現在我想改變這個表格有新的領域,這個領域必須有默認值像下面
md5(username)
東西:
alter table info add NewField varchar(100) default md5(username);
該怎麼辦?
感謝您的幫助
我有一個表,如下圖所示:如何在mysql中創建計算字段?
create table info (username varchar(30),otherinfo varchar(100));
現在我想改變這個表格有新的領域,這個領域必須有默認值像下面
md5(username)
東西:
alter table info add NewField varchar(100) default md5(username);
該怎麼辦?
感謝您的幫助
每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);
你應該寫一個觸發器來實現這一功能,因爲MySQL有內置的MD5函數或你有能力的寫或找到MySQL的:)
採取md5算法看看@http://dev.mysql.com/doc/refman/5.0/en/triggers.html
的MD5函數來看看這裏
http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html
此外,你應該知道,MD5是不是secure algorithm anymore。
+1收集所有這些方便的鏈接。 – bernie 2010-11-21 08:40:18