1. 程式人生 > >【MySQL】玩轉定時器

【MySQL】玩轉定時器

color res .com tle isa 服務器 primary ima glob

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/

【MySQL】玩轉定時器