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)
你应该编写一个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不再是安全算法.