MYSQL教程逐步讲解MySQL中定时事件计划的创建
《MYSQL教程逐步讲解MySQL中定时事件计划的创建》要点: MYSQL入门一、使用过程 MYSQL入门
SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
SHOW PROCESSLIST;
MYSQL入门? MYSQL入门
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
MYSQL入门键值1或者ON表示开启;0或者OFF表示关闭; MYSQL入门
SELECT HOST,USER,Event_priv FROM mysql.user;
MYSQL入门 MYSQL入门获取当前登陆的用户和数据库:SELECT CURRENT_USER(),SCHEMA(); MYSQL入门
UPDATE mysql.user SET Event_priv = 'Y' WHERE HOST='%' AND USER='bfsql';
FLUSH PRIVILEGES;
MYSQL入门最后,你可以通过SHOW GRANTS FOR 'bfsql'@'%';查看所有权限; MYSQL入门
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement
MYSQL入门(2)创建事件的示例如下: MYSQL入门
DELIMITER $$
CREATE EVENT IF NOT EXISTS e_blog
ON SCHEDULE EVERY 30 SECOND
ON COMPLETION PRESERVE
DO BEGIN
CALL MoveBlogData();
END$$
DELIMITER ;
MYSQL入门? MYSQL入门
--从现在开始每隔九天定时执行
CREATE EVENT EVENT1
ON SCHEDULE EVERY 9 DAY STARTS NOW()
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL TOTAL();
END
--每个月的一号凌晨1 点执行
CREATE EVENT EVENT2
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL 1 MONTH),INTERVAL 1 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL STAT();
END
---每个季度一号的凌晨2点执行
CREATE EVENT TOTAL_SEASON_EVENT
ON SCHEDULE EVERY 1 QUARTER STARTS DATE_ADD(DATE_ADD(DATE( CONCAT(YEAR(CURDATE()),'-',ELT(QUARTER(CURDATE()),1,4,7,10),1)),INTERVAL 1 QUARTER),INTERVAL 2 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL SEASON_STAT();
END
--每年1月1号凌晨四点执行
CREATE EVENT TOTAL_YEAR_EVENT
ON SCHEDULE EVERY 1 YEAR STARTS DATE_ADD(DATE(CONCAT(YEAR(CURDATE()) + 1,INTERVAL 4 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL YEAR_STAT();
END
MYSQL入门? MYSQL入门
ALTER EVENT e_test ON COMPLETION PRESERVE ENABLE;
MYSQL入门关闭某事件: MYSQL入门
ALTER EVENT e_test ON COMPLETION PRESERVE DISABLE;
MYSQL入门二、实例: MYSQL入门
create table mytable (
id int auto_increment not null,name varchar(100) not null default '',introduce text not null,createtime timestamp not null,constraint pk_mytable primary key(id)
)
MYSQL入门 MYSQL入门
create procedure mypro()
BEGIN
insert into mytable (name,introduce,createtime) values ('1111','inner mongolia',now());
end;
MYSQL入门这里只是简单的写了一下,只是为了说明例子. MYSQL入门 MYSQL入门
create event if not exists eventJob
on schedule every 1 second
on completion PRESERVE
do call mypro();
MYSQL入门这里设置为每一秒执行一次 MYSQL入门至此所有的准备工作已经写完了,做完这些,mysql要想利用定时器必须的做准备工作,就是把mysql的定时器给开启了: MYSQL入门
SET GLOBAL event_scheduler = 1; -- 启动定时器
SET GLOBAL event_scheduler = 0; -- 停止定时器
MYSQL入门紧接着还要开启事件: MYSQL入门
ALTER EVENT eventJob ON COMPLETION PRESERVE ENABLE; -- 开启事件
ALTER EVENT eventJob ON COMPLETION PRESERVE DISABLE; -- 关闭事件
SHOW VARIABLES LIKE '%sche%'; -- 查看定时器状态
MYSQL入门至此,你去数据库里面的表mytable里面看下,系统会每隔一秒去插入一条数据,嘻嘻,任务完成了. MYSQL入门
select * from mytable
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |