mysql通过event和存储过程实时更新简单Demo

 

今天想稍微了解一下存储过程和EVENT事件,最好的方法还是直接做一个简单的demo吧

首先可以在mysql表中创建一个users表 除了设置一些username,password等必要字段以外还要设立sex(性别)

这里规定sex = 1为男 sex = 0 为女

然后建立表格genderstatistics(性别统计表)设立两个字段分别为 boy_count,girl_count(男女生数量)

需求

实现当users表中男女生的数量能实时的显示在genderstatistics表中

 

实现

我是在navicat12 for mysql中新建一个查询开始的

我们先来创建存储过程

DELIMITER //
-- Drop Procedure update_sex 注意这里不能加()
Create Procedure update_sex()
BEGIN
	update genderstatistics set genderstatistics.boy_count = (SELECT COUNT(*) from users where users.sex = 0),genderstatistics.girl_count =(SELECT COUNT(*) from users where users.sex = 1) ;
END;
//
DELIMITER;  

修改的时候一直会报错,所以我这里就直接通过删除(drop)再新建来满足我新的需求

以上存储过程大概表达的是 从users表中查询到男女生的数量并更新到genderstatistics表中

然后我们在来尝试建立EVENT

CREATE EVENT IF NOT EXISTS update_boysex
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE ENABLE COMMENT '时刻更新男女生的数量'
Do 
BEGIN
Call update_sex();
END

 这里呢是直接在新的查询中创建事件的,你可以直接在Navicat的Event中操作 

当然这样的话写法也会不一样了

 

好的我们接下来来简单的试验一下吧

 当前的男女生数量在genderstatistics表中显示为

 

 

我们往users表添加任意数量的男生女生

 

 

刷新genderstatiscs表后

 

 

再不断的修改或添加或删除users的男生女生人数,不断试验,发现有效。

 

好啦,简单的利用event和存储过程来操作数据表的实现实时更新的demo就完成啦。

 

posted @ 2018-09-19 11:50  sukidagala2018  阅读(738)  评论(0编辑  收藏  举报