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 Backup mysqldump 常用选项与主要用法--转发
    openssl 之RSA加密
    Windows 之Dll/lib导出
    缓存雪崩、击穿、穿透
    时间复杂度
    分布式事务
    mysql主从复制与读写分离
    什么是消息队列?
    微服务架构演化
    高并发问题常规思路
  • 原文地址:https://www.cnblogs.com/simpledev/p/3980992.html
Copyright © 2011-2022 走看看