mysql - MySQL 触发器 - 我已将它们设置为填充新表,但需要一种从现有数据中填充的方法
问题描述
标题说明了大部分内容-我设置了一个新表,该表由其他表通过触发器填充。
显然,新表还没有数据——我需要找到一种方法来填充现有数据,而不仅仅是新数据。
触发器是更新/创建/删除,所以我可以在某处更新一个字段以在最后添加一个空格然后将其删除,但这似乎有点......奇怪
请问有什么想法吗?我在这里搜索过,一个也找不到。
示例将是表帖子,插入触发器然后使用计数(*)填充表 posts_stats
它专门用于从现有数据中触发触发器。
谢谢!
解决方案
我建议创建视图。原因:MySQL 支持视图,包括可更新视图。视图是存储的查询,在调用时会产生结果集。视图充当虚拟表。(Mysql手册)
我将根据案例进行解释:
创建表:
CREATE TABLE `sample_user` (
`id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(16) DEFAULT NULL,
`gender` enum('F','M') DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=ascii
插入样本数据:
insert into `sample_user` (`id`, `name`, `gender`) values('1','Aalona','F');
insert into `sample_user` (`id`, `name`, `gender`) values('2','Abbie','F');
insert into `sample_user` (`id`, `name`, `gender`) values('3','Brielle','F');
insert into `sample_user` (`id`, `name`, `gender`) values('4','Abigail','F');
insert into `sample_user` (`id`, `name`, `gender`) values('5','Caleb','M');
insert into `sample_user` (`id`, `name`, `gender`) values('6','Damian','M');
样本数据:
语法创建视图:
CREATE VIEW sample_view
AS SELECT gender,COUNT(*) total FROM `sample_user` GROUP BY gender
在 Sqlyogeditor 中将如下所示:
之后,您可以从该视图中进行选择。
SELECT * FROM sample_view
结果:
推荐阅读
- java - 与元素类型“null”关联的属性“standardData”的值不能包含“<”字符
- python - Python - 尝试从 Pandas 中的 DataFrame 中随机选择一个元素
- c# - 为什么当我插入文本框 C# 时不显示 MDI 子窗体
- javascript - 如何在使用 Java Script 将 JSON 导出到 Excel 时将整列设为数字
- r - 如何根据条件更改数据框中列的多个行值?
- python - 连续增加一个值,如果日期更改,则将变量设置为零
- dokku - 如果 dokku 进入,我如何进入我的容器
什么也没做? - c - 如何找到单词的长度并将它们作为数组返回?
- java - org.Bson 中 RawBsonDocument.getByteBuffer().array() 字节数组中的尾随零
- python-3.x - Jsonify 异常错误