mysql - 如何在 MySQL 中创建动态填充数据的表模式?
问题描述
我有一个php
页面,用户在其中输入以下详细信息
- 姓名
- 年龄
但是在数据库中,我希望有一个附加列,它可以自动插入数据以及输入数据的组合,如下所示的代码列。
钥匙 | 姓名 | 年龄 | 代码 |
---|---|---|---|
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 行的“代码,主键 ()”附近使用正确的语法
注意:我不想从前端连接和提供数据。
注意:这只是示例,因为我无法发布真实数据。
解决方案
您可以为动态默认值设置触发器
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));
推荐阅读
- regex - GNU Octave 的 regexprep 可能错误地编号可选组
- javascript - Angular,循环遍历 DOM 上已创建的组件
- c# - Html Agility Pack 为存在的项目提供 NullReferenceException
- sql-server - 您可以在实时生产 Windows 服务器上运行 SQL Server Developer 版本吗?
- java - 在运行时设置 application.properties
- java - Android Http 请求 POST JSON
- git - 如何显示包含父母信息的所有提交列表?
- javascript - 窗口提交方法内的Javascript停止工作
- pandas - Pandas:组合具有不同值的行
- python - 从导入的脚本函数返回 for 循环中的变量