【MySQL】玩轉定時器


1、前置條件,你需要將服務器和mysql的時間都設置成東八區,php.ini和my.cnf配置(參考上篇文章)

2、進入mysql客戶端,推薦Navicat for mysql

3、首先查看是否開啟了定時器的功能:

####調試MYSQL定時器 --時間設置正確情況下執行下面沒影響 xzz1128 #####
set time_zone = '+8:00';
SHOW VARIABLES LIKE 'event_scheduler';##查看是否開啟了event定時器功能
set GLOBAL event_scheduler = 1; //開啟
select NOW();

4、提醒:雖然這里用set global event_scheduler = on語句開啟了事件,但是每次重啟電腦。或重啟mysql服務后,會發現,事件自動關閉(event_scheduler=OFF),所以想讓事件一直保持開啟,最好修改配置文件,讓mysql服務啟動的時候開啟時間,只需要在my.cnf配置文件的[mysqld]部分加上event_scheduler=ON 即可,如下:

5、首先、新建user表:

復制代碼
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  `address` varchar(500) NOT NULL,
  `addtime` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
復制代碼

然后、新建事件,有兩種事件類型,一個是間隔觸發,另一個是特定事件觸發。

6、下面代碼中分別介紹了定時器執行持續性動作(每個時間點需要干的)一次性動作(只用一次,用完即甩)

 

#################  mysql持續性定時器 -xzz 1128 ##########################
DROP EVENT IF EXISTS `event_minute`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` EVENT `event_minute` ON SCHEDULE EVERY 1 MINUTE STARTS '2017-11-28 15:26:00' 
ON COMPLETION PRESERVE #當這個事件不會再發生的時候不會被Drop掉
ENABLE DO 

BEGIN
    INSERT INTO `user`(name, address,addtime) VALUES('test1','test1',now());
    INSERT INTO `user`(name, address,addtime) VALUES('test2','test2',now());
END
;;
DELIMITER ;
##################mysql一次性定時器#################################
DROP EVENT IF EXISTS `event_at`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` EVENT `event_at` ON SCHEDULE AT '2017-11-28 15:39:00' 
ON COMPLETION NOT PRESERVE #當這個事件不會再發生的時候會被Drop掉
ENABLE DO 

BEGIN
    INSERT INTO `user`(name, address,addtime) VALUES('AT','AT',now());
END
;;
DELIMITER ;

 

7、其他比較重要的操作語句

###關閉\打開定時器
ALTER EVENT event_minute DISABLE; 
ALTER EVENT event_minute ENABLE;
###查詢定時器狀態
select * from mysql.event ;

 

8、看看效果:

8、感謝:

@Author      風一樣的碼農
@HomePageUrl http://www.cnblogs.com/chenpi/ 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM