zoukankan      html  css  js  c++  java
  • mysql存储过程和事件

    1.会员表member和车辆表car,更新每个会员下面的车辆数量have_car字段。

    DELIMITER $$
    
    USE $$
    
    DROP PROCEDURE IF EXISTS `sp_update_member_have_car`$$
    
    CREATEPROCEDURE `sp_update_member_have_car`()
    BEGIN
        DECLARE tmp INT DEFAULT 0;  
        DECLARE done INT DEFAULT -1;  
        
        /* 声明游标 */  
        DECLARE myCursor CURSOR FOR SELECT reg_no FROM member WHERE have_car IS NULL;  
          
        /* 当游标到达尾部时,mysql自动设置done=1 */     
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;  
          
        /* 打开游标 */  
        OPEN myCursor;  
          
        /* 循环开始 */  
        myLoop: LOOP  
            /* 移动游标并赋值 */  
            FETCH myCursor INTO tmp;  
            IF done = 1 THEN   
                LEAVE myLoop;  
            END IF;  
               /* do something */  
            UPDATE member SET have_car = (SELECT COUNT(*) FROM car WHERE mem_no= tmp ) WHERE reg_no = tmp; 
        /* 循环结束 */  
        END LOOP myLoop;  
          
        /* 关闭游标 */  
        CLOSE myCursor;
        END$$
    
    DELIMITER ;

    建立执行计划,每天凌晨1点执行存储过程。

    DELIMITER $$
    
    ALTER EVENT `E_Update_HaveCar_Field_Event_1` ON SCHEDULE EVERY 1 DAY STARTS '2014-09-19 01:00:00' ON COMPLETION PRESERVE ENABLE DO BEGIN
            CALL `sp_update_member_have_car`();  
        END$$
    
    DELIMITER ;



  • 相关阅读:
    MySQL数据模型
    Spring循环依赖
    @Autowired和@Resource区别
    Kafka概念
    阻塞队列
    线程池原理
    Spring AOP
    JVM 史上最最最完整深入解析(12000 字噢)
    Dubbo配置信息
    友情链接
  • 原文地址:https://www.cnblogs.com/simpledev/p/3980992.html
Copyright © 2011-2022 走看看