zoukankan      html  css  js  c++  java
  • 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就完成啦。

  • 相关阅读:
    python -基础-强大的列表推导式
    python-基础-字符串拼接
    tkinter学习-- 控件一、Label、Button
    python -re模块
    Apache POI XWPF 爬坑指南之二特定位置插入表格、段落、图片
    mybatis报错:Invalid bound statement (not found):
    bootstrap中input输入框后面添加图标
    bootstrap悬浮显示内容
    layui中使用laydate
    与SQL相关解释表关联(left join ... on ... and ...)
  • 原文地址:https://www.cnblogs.com/RikuBlog/p/9673769.html
Copyright © 2011-2022 走看看