首页 > 解决方案 > 如何在 MySQL 中创建动态填充数据的表模式?

问题描述

我有一个php页面,用户在其中输入以下详细信息

  1. 姓名
  2. 年龄

但是在数据库中,我希望有一个附加列,它可以自动插入数据以及输入数据的组合,如下所示的代码列。

钥匙 姓名 年龄 代码
1 麦克风 28 迈克128
2 拉吉 32 RAJ232

所以我改变了我的桌子如下

   ALTER TABLE Employee ADD COLUMN Code;
   UPDATE Employee  SET Code = CONCAT(Key,Name,Age);

但这只会更新现有数据的现有数据,并显示NULL新输入的数据。我将使用什么命令来更改架构,以便每当我自动添加新数据时它都会更新Code

下面是我的尝试,失败了

     CREATE TABLE `Employee` (
        `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
        `Name` varchar(50) NOT NULL,
        `Age` int(2) NOT NULL,
        `Combined` varchar(10) AS (`Name` + `id` +  `Age`) Code,
        PRIMARY KEY (`id`)
     );

第 2 行的 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以id在第 4 行的“代码,主键 ()”附近使用正确的语法

注意:我不想从前端连接和提供数据。

注意:这只是示例,因为我无法发布真实数据。

标签: mysql

解决方案


您可以为动态默认值设置触发器

CREATE TRIGGER Employee_code_trigger
BEFORE INSERT ON Employee
FOR EACH ROW 
SET NEW.Code = IFNULL(NEW.Code, CONCAT(NEW.Key, NEW.Name, NEW.Age));

推荐阅读