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

8

我有一个如下的表格:

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

现在我想修改这个表格,添加一个新字段,并且这个字段必须有默认值

md5(username)

以下是一些类似的内容:

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

如何做到这一点?
感谢您的帮助。

2个回答

18

根据MySQL的文档 (加粗强调),你不能在默认值中使用表达式:

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);

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接