当前位置: 首页 > 面试题库 >

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

高锦
2023-03-14
问题内容

我有一个如下表:

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列的默认值。

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

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


 类似资料:
  • 如何创建计算字段以及怎么样从应用程序中使用别名。 计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式,例如: 显示两个信息,但不是在用一个表 不同列中,但程序需要把他们作为一个格式的字段检索出来 列数据是大小混合,但程序需要把所以数据按大写表示。 物品订单表存储的物品的价格和数量,但没有存储物品的总价,打印时,需要物品的总价格。 根据需要表的数据进行总数,平均数等计算。 上面的情况都我们

  • 问题内容: 我真的需要一个具有简单总和的表上的计算列。 请看下面: 我试图通过添加以下内容来创建计算列 我收到错误消息: 在这种情况下,不允许消息1046,级别15,状态1,第4行子查询。仅允许标量表达式。 请告知我该怎么办。 非常感谢 第2部分 我已经创建了一个函数;但是,我得到空值,请指教。 只需选择返回要添加到Phone_list表中的值的语句 表定义 问题答案: 你可以用你的查询到这样的(

  • 问题内容: 在课堂上,我们都是“学习”数据库,每个人都在使用Access。厌倦了这一点,我试图做该类其余部分的工作,但是要使用MySQL的原始SQL命令而不是使用Access。 我已经设法创建数据库和表,但是现在如何在两个表之间建立关系? 如果我有两个这样的表: 和 如何在两个表之间创建“关系”?我希望为每个帐户“分配”一个customer_id(以指示谁拥有它)。 问题答案: 如果表是innod

  • 问题内容: 我正在尝试在MySQL中创建序列(从整体上来说,我对SQL还是很新的)。我正在使用以下代码,但这会导致错误: ORDID指向我正在使用的表中的字段。如何正确创建序列? 编辑: 据称,MySQL不使用序列。我现在正在使用以下代码,但这也会引起错误。我该如何解决? 编辑: 我想我找到了解决方法。对于phpMyAdmin(我正在使用),您可以使用以下代码。 我不知道为什么它会喜欢这种方式,但

  • 问题内容: 我正在尝试在MySQL中生成一个大的连续数字表。 我只想要2列;一个主键和一个数字列,范围在0-X之间,其中X很大。大约 应该有64,000行。我尝试了以下代码,但没有成功: 我得到这个错误: #1064-您的SQL语法有误;在第3行的“ CONSTRAINT XPKnumbers PRIMARY KEY CLUSTERED(number))INSERT INTO n”附近检查与您的M

  • 问题内容: 我正在努力使自己在nodejs中创建非阻塞的繁重计算。请看以下示例(从其他内容中删除): 可以想象,如果我同时打开2个浏览器窗口,第一个将等待10秒,另一个将等待20秒,这与预期的一样。因此,在知道回调以某种方式是异步的情况下,我删除了睡眠并改为放置: 具有简单定义的功能: 那当然是行不通的…我也曾尝试定义一个EventEmitter并向其注册,但是例如,发射器的主要功能在发出“完成”