由于項目需要創(chuàng)建定時器(evevt),所以就百度了一下,發(fā)現(xiàn)基本都是來源于一個模板,有些功能還不全,現(xiàn)在自己總結(jié)一下。 注:mysql版本是從5.1開始才支持event的。如果你的版本低于5.1就先升級版本吧。 查看版本的方法有很多,這里只給大家提供一個 select version(); 1.查看是否開啟evevt與開啟evevt。 1.1、MySQL evevt功能默認(rèn)是關(guān)閉的,可以使用下面的語句來看evevt的狀態(tài),如果是OFF或者0,表示是關(guān)閉的。 show VARIABLES LIKE '%sche%'; 1.2、開啟evevt功能 SET GLOBAL event_scheduler = 1; 2.創(chuàng)建定時器的過程 2.1、創(chuàng)建測試表test drop table if exists test; create table test ( id int(11) not null auto_increment primary key, time datetime not null ) engine=innodb default charset=utf8; 2.2、創(chuàng)建evevt要調(diào)用的存儲過程test_proce delimiter // drop procedure if exists test_proce// create procedure test_proce() begin insert into test(time) values(now()); end// delimiter ; 2.3、開啟evevt(要使定時起作用,MySQL的常量GLOBAL event_scheduler必須為on或者是1) 執(zhí)行show variables like 'event_scheduler';查看evevt是否開啟; 若沒開啟執(zhí)行set global event_scheduler='on'; 2.4、創(chuàng)建事件test_event(其作用:每隔一秒自動調(diào)用test_proce()存儲過程) drop event if exists test_event; create event test_event on schedule every 1 second on completion preserve disable do call test_proce(); 2.5、開啟事件test_event alter event test_event on completion preserve enable; 2.6、關(guān)閉事件test_event alter event test_event on completion preserve disable; 2.7、查看表test select * from test; 3.查看自己創(chuàng)建的event 如果要查看更加詳細(xì)的信息,你需要root用戶的授權(quán),如果是你自己的數(shù)據(jù)庫你可以用下面語句查看 select * from mysql.event; 下面的我的evevt的查看結(jié)果 暫無圖片后面補 4.event的時間設(shè)置 設(shè)置event很簡單,但是麻煩的是如何設(shè)置執(zhí)行的時間,網(wǎng)上找了一些,自己總結(jié)了一下。 先看語句,如下面這個 CREATE EVENT test_event ON SCHEDULE EVERY 1 DAY STARTS '2012-09-24 00:00:00' ON COMPLETION PRESERVE ENABLE DO CALL test_procedure(); EVERY 后面的是時間間隔,可以選 1 second,3 minute,5 hour,9 day,1 month,1 quarter(季度),1 year 從2013年1月13號0點開始,每天運行一次 ON SCHEDULE EVERY 1 DAY STARTS '2013-01-13 00:00:00' 從現(xiàn)在開始每隔九天定時執(zhí)行 ON SCHEDULE EVERY 9 DAY STARTS NOW() ; 每個月的一號凌晨1 點執(zhí)行 on schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour); 每個季度一號的凌晨1點執(zhí)行 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 1 hour); 每年1月1號凌晨1點執(zhí)行 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 1 hour); 其他的 就大家自由組合了。。