mysql定时任务job_mysql 定时任务job
1、通過show EVENTS顯示當前定義的事件
2、檢查event_scheduler狀態:SHOW VARIABLES LIKE 'event_scheduler'
3、設置job自動啟動可以執行:SET GLOBAL event_scheduler = 1;或修改my.ini文件,添加:event_scheduler=1
4、創建一張簡單的測試表
CREATE TABLE `example` (
`id` varchar(50) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
5、創建一個簡單的存儲過程,執行數據插入任務
delimiter //
CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_example`()
BEGIN
INSERT INTO example VALUES('example','example');
END
//
6、創建數據庫定時任務
# 如果原來存在該名字的任務計劃則先刪除
drop event if exists example_event2;
CREATE DEFINER=`root`@`localhost` EVENT `example_event2`
ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP
ON COMPLETION NOT PRESERVE ENABLE
DO
call pro_example
;
2.
DROP EVENT IF EXISTS JOB_ALARM;
CREATE EVENT JOB_ALARM
ON SCHEDULE EVERY 10 MINUTE
DO
BEGIN
if(date_format(current_time(),'%H')>22 || date_format(current_time(),'%H')<5) THEN
CALL PRO_ALARM();
END IF;
END
查看example表可以發現,每隔一分鐘會多出一條記錄。
# 停止
ALTER EVENT example_event2 DISABLE;
# 開啟
alter event example_event2 enable;
注意:真實的開發環境中,會遇到mysql服務重啟或者斷電的情況,此時則會出現事件調度器被關閉的情況,所有事件都不在起作用,要想解決這個辦法,則需要在mysql.ini文件中加入event_scheduler = ON; 的語句
創建事件語法:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
修改事件語法:
ALTER EVENT event_name
[ON SCHEDULE schedule]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT 'comment']
[ENABLE | DISABLE]
[DO sql_statement]
總結
以上是生活随笔為你收集整理的mysql定时任务job_mysql 定时任务job的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基础篇:5)机械产品的基础知识与图纸必备
- 下一篇: SQL基础查询笔记【动力节点的视频】