MySQL --- MySQL的定时器和存储过程

1、数据库是否开启定时器

-- 查看是否开启定时器 

SHOW VARIABLES LIKE '%sche%'; 
-- 开启定时器 0:off 1:on 

      0或者off 表示关闭

      1或者on表示开启

SET GLOBAL event_scheduler = 1; 


2、创建表

-- 创建备份表
CREATE TABLE `task_count_copy` (
  `uuid` int(32) NOT NULL AUTO_INCREMENT,
  `task_id` varchar(32) COLLATE utf8_bin DEFAULT NULL,
  `address_id` varchar(32) COLLATE utf8_bin DEFAULT NULL,
  `device_id` int(11) DEFAULT NULL,
  `unfinished_count` int(11) DEFAULT '0',
  `finished_count` int(11) DEFAULT '0',
  `error_count` int(11) DEFAULT '0',
  PRIMARY KEY (`uuid`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=COMPACT;

3、写存储过程

-- 查看库中有哪些存储过程 
SHOW PROCEDURE STATUS WHERE Db='hzq';  
-- 创建存储过程 
DELIMITER $$ 
DROP PROCEDURE IF EXISTS task_count_procedure $$ 
CREATE PROCEDURE task_count_procedure() 
BEGIN 
-- SQL语句
INSERT INTO task_count_copy (task_id, address_id)
VALUE
	(
		'0054471ead414d8ab23ae17fe1cc9f',
		23
	)
END $$ 
DELIMITER

4、创建定时器

-- 创建定时器
DROP EVENT IF EXISTS event_task_count;
CREATE EVENT event_task_count
-- ON SCHEDULE  计划任务,有两种设定计划任务的方式:
-- AT 时间戳,用来完成单次的计划任务。
-- EVERY 时间(单位)的数量时间单位[STARTS 时间戳] [ENDS时间戳],用来完成重复的计划任务
-- 在两种计划任务中,时间戳可以是任意的TIMESTAMP 和DATETIME 数据类型,时间戳需要大于当前时间
-- 重复计划:
-- 在重复的计划任务中,时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。
-- 其他的时间单位也是合法的如:QUARTER, WEEK, YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建议使用这些不标准的时间单位。
ON SCHEDULE EVERY 30 SECOND 
-- ON COMPLETION参数表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后不会被Drop掉,建议使用该参数,以便于查看EVENT具体信息。
ON COMPLETION PRESERVE 
-- 参数Enable和Disable表示设定事件的状态。Enable表示系统将执行这个事件。Disable表示系统不执行该事件
ENABLE 
-- event需要执行的SQL语句或存储过程。
DO BEGIN
-- CALL语句调用一个先前用CREATE PROCEDURE创建的存储过程。
CALL task_count_procedure();
END

5、开启和关闭定时器

-- 开启事件 
ALTER EVENT event_task_count ON 
COMPLETION PRESERVE ENABLE; 
-- 关闭事件 
ALTER EVENT event_task_count ON 
COMPLETION PRESERVE DISABLE; 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值