我有一个如下表:
create table info (username varchar(30),otherinfo varchar(100));
现在我想更改此表以具有新字段,并且该字段必须具有默认值
md5(username)
如下所示:
alter table info add NewField varchar(100) default md5(username);
怎么做? 谢谢你的帮助
根据MySQL 文档(添加了重点),您不能使用默认值的表达式:
10.1.4。数据类型默认值 数据类型规范中的DEFAULT value子句指示列的默认值。除一个例外, 默认值必须为常量; 它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为诸如NOW()或CURRENT_DATE之类的函数的值。唯一的例外是您可以将CURRENT_TIMESTAMP指定为TIMESTAMP列的默认值。
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);