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就完成啦。

  • 相关阅读:
    牛客 4C Alliances (dfs序)
    AC日记——楼房 codevs 2995
    AC日记——丑数 codevs 1246
    AC日记——砍树 codevs 1388
    AC日记——地鼠游戏 codevs 1052
    AC日记——蓬莱山辉夜 codevs 2830
    AC日记——最小的N个和 codevs 1245
    AC日记——二叉堆练习3 codevs 3110
    AC日记——滑动窗口 洛谷 P1886
    AC日记——忠诚 洛谷 P1816
  • 原文地址:https://www.cnblogs.com/RikuBlog/p/9673769.html
Copyright © 2011-2022 走看看