MySQL任务调度和存储过程实现实时修改表中字段值

来源:互联网 发布:数据挖掘 十大算法 bp 编辑:程序博客网 时间:2024/06/01 10:04
1、创建表

CREATE TABLE `zf_activity` (
`ACTIVITY_ID` int(11) NOT NULL AUTO_INCREMENT,
`ZF_USER_ID` int(11) DEFAULT NULL COMMENT '活动发起人|2|2|1|1',
`AGENCY_ID` int(11) DEFAULT NULL COMMENT '单位ID|2|2|1|1',
`TITLE` varchar(150) NOT NULL COMMENT '标题|1|2|1|1',
`KEYWORDS` varchar(500) NOT NULL COMMENT '关键字|2|2|1|1',
`DESCRI` varchar(500) DEFAULT NULL COMMENT '描述|2|2|10|2',
`VIDEO_ID` int(11) DEFAULT NULL COMMENT '视频|2|2|13|2',
`CONTENT` text COMMENT '内容|2|2|11|1',
`THUMB` varchar(255) DEFAULT NULL COMMENT '海报|2|2|12|2',
`AREA` varchar(255) DEFAULT NULL COMMENT '区域|2|2|5|1',
`MAP_INFO` varchar(50) DEFAULT NULL COMMENT '信息|2|2|1|2',
`LINK_MAN` varchar(50) DEFAULT NULL COMMENT '联系人|2|2|1|1',
`TEL` varchar(50) DEFAULT NULL COMMENT '联系电话|2|2|1|1',
`DETAIL_ADDRESS` varchar(255) DEFAULT NULL COMMENT '详细地址|2|2|1|2',
`FEE` decimal(11,2) NOT NULL DEFAULT '0.00' COMMENT '费用|2|2|3|1',
`START_TIME` datetime NOT NULL COMMENT '开始时间|2|2|4|1',
`END_TIME` datetime NOT NULL COMMENT '结束时间|2|2|4|1',
`ADD_TIME` datetime DEFAULT NULL COMMENT '添加时间|2|2|4|2',
`PUBLISH_TIME` datetime DEFAULT NULL COMMENT '发布时间|2|2|4|2',
`ACTIVITY_TYPE` int(11) DEFAULT NULL COMMENT '活动类型ID|2|2|1|1',
`ACTIVITY_LINK` varchar(1000) DEFAULT NULL COMMENT '活动链接|2|2|1|2',
`VISTIS_COUNT` int(11) NOT NULL DEFAULT '0' COMMENT '访问人数|2|2|1|2',
`LIKE_COUNT` int(11) NOT NULL DEFAULT '0' COMMENT '喜欢人数|2|2|1|2',
`ENROL_COUNT` int(11) NOT NULL DEFAULT '0' COMMENT '报名人数|2|2|1|2',
`COMMENT_COUNT` int(11) NOT NULL DEFAULT '0',
`COLLECTION_COUNT` int(11) NOT NULL DEFAULT '0',
`TOP_MARK` tinyint(1) NOT NULL DEFAULT '0' COMMENT '置顶|2|2|6|1',
`TOP_EXPIRE` datetime DEFAULT NULL COMMENT '置顶有效期|2|2|4|2',
`PUBLISH_STATUS` char(1) NOT NULL DEFAULT '0' COMMENT '发布状态|2|2|1|2',
`STATUS` tinyint(1) NOT NULL DEFAULT '0' COMMENT '活动状态|2|2|1|2',
`IS_OPEN_COMMENT` char(1) NOT NULL DEFAULT 'Y' COMMENT '是否开启评论|2|2|6|1',
`IS_OPEN_ENROL` char(1) NOT NULL DEFAULT 'Y' COMMENT '是否开启报名|2|2|6|1',
`IS_DEL` char(1) NOT NULL DEFAULT 'N',
PRIMARY KEY (`ACTIVITY_ID`),
KEY `ZF_USER_ID` (`ZF_USER_ID`),
KEY `AGENCY_ID` (`AGENCY_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;


2、创建存储过程

DELIMITER $$

USE `wqd_zw_platform`$$

DROP PROCEDURE IF EXISTS `update_activity_state`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `update_activity_state`()
BEGIN
-- 声明临时变量
DECLARE pkd INT;
-- 声明游标结束标志
DECLARE done INT DEFAULT FALSE;
-- 声明游标
DECLARE cur CURSOR FOR SELECT zf_activity.ACTIVITY_ID FROM zf_activity WHERE zf_activity.STATUS=0 AND zf_activity.PUBLISH_STATUS=1 AND zf_activity.IS_DEL='N' AND zf_activity.END_TIME<SYSDATE();
-- 游标循环到最后,将游标标志置为true
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标执行
OPEN cur;
-- 遍历游标每一行
REPEAT
-- 把每一行的游标值存储到变量中
FETCH cur INTO pkd;
-- 如果游标循环没有结束,执行then后面的语句
IF NOT done THEN
UPDATE zf_activity SET zf_activity.STATUS=1 WHERE zf_activity.ACTIVITY_ID=pkd;
END IF;
UNTIL done END REPEAT;
CLOSE cur;
END$$

DELIMITER ;


3、创建任务

DELIMITER $$

ALTER DEFINER=`root`@`localhost` EVENT `wqd_task` ON SCHEDULE EVERY 10 SECOND STARTS '2017-03-15 16:54:26' ON COMPLETION NOT PRESERVE ENABLE DO CALL update_activity_state$$

DELIMITER ;

4、开启任务调度

SET GLOBAL event_scheduler = ON;


原创粉丝点击