一尘不染

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

mysql

我有一个如下表:

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

现在我想更改此表以具有新字段,并且该字段必须具有默认值

md5(username)

如下所示:

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

怎么做?
谢谢你的帮助


阅读 344

收藏
2020-05-17

共1个答案

一尘不染

根据MySQL 文档(添加了重点),您不能使用默认值的表达式:

10.1.4。数据类型默认值

数据类型规范中的DEFAULT value子句指示列的默认值。除一个例外, 默认值必须为常量;
它不能是函数或表达式
。例如,这意味着您不能将日期列的默认值设置为诸如NOW()或CURRENT_DATE之类的函数的值。唯一的例外是您可以将CURRENT_TIMESTAMP指定为TIMESTAMP列的默认值。

我已经测试了以下触发器可满足您的意图:

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