首页 > 代码库 > mysql存储过程和事件
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存储过程和事件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。