当前位置: 首页 > news >正文

使用MySQL触发器自动生成日汇总表

需求

每天有很多数据需要汇总,之前是用select sum(money)...来统计,当数据量上来时候往往会导致MySQL被阻塞。

解决方案

1、在程序中写入数据的时候同时往日报表里写(太简单了)
2、利用触发器

方法

CREATE TABLE `order` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `money` int(255) DEFAULT NULL,
  `status` varchar(255) DEFAULT NULL,
  `createAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

CREATE TRIGGER `report` AFTER INSERT ON `order` FOR EACH ROW
if not exists(select id from report_day where name=new.name and date=date(new.createAt)) then
  --先判断是否存在数据,没有则插入
  insert into report_day values(null,new.name,new.money,date(new.createAt));
else
  --存在则更新
  update report_day  set money=money+new.money where name=new.name and date=date(new.createAt);
end if;

CREATE TABLE `report_day` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `money` varchar(255) DEFAULT NULL,
  `date` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

测试

insert into `order` (name,money,status) values('a',200,0);
insert into `order` (name,money,status) values('a',100,0);
insert into `order` (name,money,status) values('b',10,0);
insert into `order` (name,money,status) values('b',20,0);

结果

数据表:
数据表

汇总表:
汇总表

参考资料

[1] https://dev.mysql.com/doc/refman/5.5/en/create-trigger.html
[2] https://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

相关文章:

  • C#使用DES加解密数据
  • Install nodejs on CentOS 7+
  • WindowsMobile上C#通过DirectShow控制摄像头
  • MACBOOK 调教指北
  • 关于Apache无法加载PHP 7.2 curl模块问题的解决办法
  • 墙脆脆?!
  • 在群晖DS218+上编译Fluffos的Docker镜像
  • 将自己的SSH密钥对导入YubiKey 5的PIV和智能卡模块,配合Putty和XShell使用
  • 快照(Snapshot)技术发展综述
  • 国产开源硬件力作CanoKey,替代昂贵的Yubikey!
  • 在CentOS上升级OpenSSL 1.1.1k
  • firewall-cmd 常用命令
  • 俞敏洪在北京大学2008年开学典礼上的发言
  • iptables 之 REJECT 与 DROP 对比
  • Nginx捕获并自定义proxy_pass返回的错误
  • 【5+】跨webview多页面 触发事件(二)
  • Brief introduction of how to 'Call, Apply and Bind'
  • const let
  • CSS居中完全指南——构建CSS居中决策树
  • java 多线程基础, 我觉得还是有必要看看的
  • Java-详解HashMap
  • JS字符串转数字方法总结
  • Laravel 菜鸟晋级之路
  • Linux各目录及每个目录的详细介绍
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • React中的“虫洞”——Context
  • SpiderData 2019年2月23日 DApp数据排行榜
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • - 概述 - 《设计模式(极简c++版)》
  • 前端js -- this指向总结。
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端自动化解决方案
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用API自动生成工具优化前端工作流
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 项目实战-Api的解决方案
  • 7行Python代码的人脸识别
  • puppet连载22:define用法
  • ######## golang各章节终篇索引 ########
  • #pragma multi_compile #pragma shader_feature
  • (12)Hive调优——count distinct去重优化
  • (3)nginx 配置(nginx.conf)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (一)SpringBoot3---尚硅谷总结
  • (转)【Hibernate总结系列】使用举例
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)linux 命令大全
  • (转)Sublime Text3配置Lua运行环境
  • (转)visual stdio 书签功能介绍
  • (转)菜鸟学数据库(三)——存储过程
  • .bat批处理(六):替换字符串中匹配的子串