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

Ala*_*laa 8 mysql sql calculated-columns

我有一个如下表:

create table info (username varchar(30),otherinfo varchar(100));
Run Code Online (Sandbox Code Playgroud)

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

md5(username)
Run Code Online (Sandbox Code Playgroud)

如下所示:

alter table info add NewField varchar(100) default md5(username);
Run Code Online (Sandbox Code Playgroud)

该怎么办?
谢谢你的帮助

ber*_*nie 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);
Run Code Online (Sandbox Code Playgroud)


Ran*_*ray 6

你应该编写一个Trigger来实现这个功能,因为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不再是安全算法.