如何在mysql中创建计算字段?

时间:2010-11-21 07:44:39

标签: sql mysql calculated-columns

我有一张如下表:

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

现在我想改变这个表以获得新字段,并且该字段必须具有默认值

md5(username)

如下所示:

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

怎么做?
谢谢你的帮助

2 个答案:

答案 0 :(得分:18)

根据MySQL docs(强调添加),您不能使用默认值表达式:

  

10.1.4。数据类型默认值

     

数据中的DEFAULT值子句   type specification表示默认值   列的值。有一个   例外,默认值必须是a   不变;它不能是一个功能或   表达。这意味着,为   例如,你不能设置   日期列的默认值为   一个函数的值,如NOW()或   当前的日期。唯一的例外是   您可以将CURRENT_TIMESTAMP指定为   TIMESTAMP列的默认值。

我已经测试过以下触发器适用于您的意图:

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

答案 1 :(得分:6)

你应该编写一个触发器来实现这个功能,因为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