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

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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值