mysql创建定时执行存储过程任务
时间:2022-05-04
本文章向大家介绍mysql创建定时执行存储过程任务,主要内容包括1.prepare、2.创建一个存储过程、3.创建一个事件,并调用存储过程、4.懒人的做法、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
sql语法很多,是一门完整语言。这里仅仅实现一个功能,不做深入研究。
目标:定时更新表或者清空表。
案例:曾经做过定时清空位置信息表的任务。(然而,当时并未考虑服务器挂掉后的情况)
本次测试:每5s更新表字段+1
1.prepare
创建一个表:
DROP TABLE IF EXISTS `test_sche`;
CREATE TABLE `test_sche` (
`id` int(11) NOT NULL,
`counts` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of test_sche
-- ----------------------------
INSERT INTO `test_sche` VALUES ('1', '188');
2.创建一个存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `add`()
BEGIN
#Routine body goes here...
UPDATE test_sche SET counts=counts+1 WHERE id=1;
END
注意,创建存储过程的时候,如果采用命令行的方式,需要先修改命令结束符,将分号改成其他的符号
-- 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ';' ,这样在后续的 create 到 end 这段代码都会看成是一条语句来执行
DELIMITER $$
//创建存储过程或者事件语句
//结束
$$
- 将语句分割符设置回 ';'
DELIMITER ;
3.创建一个事件,并调用存储过程
CREATE DEFINER=`root`@`localhost` EVENT `test_sche_event`
ON SCHEDULE EVERY 5 SECOND STARTS '2016-07-12 22:11:50'
ON COMPLETION NOT PRESERVE ENABLE
DO CALL `add`
3.1开启定时器
set GLOBAL event_scheduler = 1;
到这里,定时任务已经可以执行了,查询可以发现count字段一直在累加。如果想要查看事件运行情况:
3.2查看事件运行状态
select * from mysql.event
3.3开启或者关闭事件
ALTER EVENT test_sche_event DISABLE;
ALTER EVENT test_sche_event ENABLE;
4.懒人的做法
好久没去写sql,语法都快忘光了,然而借助工具还是很容易做出定时器的。这里采用Navicat for mysql:
4.1创建存储过程
4.2创建事件
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- LeetCode61|字符串相加
- LeetCode60|反转字符串
- Python | Flask 解决跨域问题
- 算法 | 斐波那契数列
- 并发学习一、MPI初步认识
- Linux下使用wget下载FTP服务器文件
- 使用Java Api 操作HDFS
- String、StringBuffer 的使用 ,两个面试问题
- Java基础【冒泡、选择排序、二分查找】
- Java基础 【Arrays 类的使用】
- i++ 是线程安全的吗?一脸蒙逼
- Java程序员必备基础:JDK 5-15都有哪些经典新特性
- Java开发中如何自动填充SQL语句中的公共字段
- 打卡群刷题总结0918——乘积最大子数组
- 打卡群刷题总结0919——打家劫舍