Mysql 中的事件//定時任務

什麼是事件

一組SQL集,用來執行定時任務,跟觸發器很像,都是被動執行的,事件是由於時間到了觸發執行,而觸發器是由於某件事件(增刪改)觸發執行;mysql

開啓事件

查看是否開啓:sql

show variables like 'event_scheduler';

若是顯示OFF,則輸入如下語句開啓:spa

set global event_scheduler = on;

提醒:雖然這裏用set global event_scheduler = on語句開啓了事件,可是每次重啓電腦。或重啓mysql服務後,會發現,事件自動關閉(event_scheduler=OFF),因此想讓事件一直保持開啓,最好修改配置文件,讓mysql服務啓動的時候開啓時間,只須要在my.ini配置文件的[mysqld]部分加上event_scheduler=ON 便可,以下:code

自定義事件舉例

首先、新建user表:blog

-- ----------------------------
-- 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;

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

類型一:每隔一分鐘插入一條數據:

參數說明:event

DEFINER:建立者;class

ON COMPLETION [NOT] PRESERVE :表示當事件不會再發生的狀況下,刪除事件(注意特定時間執行的事件,若是設置了該參數,執行完畢後,事件將被刪除,不想刪除的話能夠設置成ON COMPLETION PRESERVE);test

ENABLE:表示系統將執行這個事件;配置

-- ----------------------------
-- Event structure for `event_minute`
-- ----------------------------
DROP EVENT IF EXISTS `event_minute`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` EVENT `event_minute` ON SCHEDULE EVERY 1 MINUTE STARTS '2016-01-17 14:49:43' ON COMPLETION NOT PRESERVE 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 ;

類型二:特定時間插入一條數據,如2016-01-17 15:30:00

參數說明:

DEFINER:建立者;

ON COMPLETION [NOT] PRESERVE :表示當事件不會再發生的狀況下,刪除事件(注意特定時間執行的事件,若是設置了該參數,執行完畢後,事件將被刪除,不想刪除的話能夠設置成ON COMPLETION PRESERVE);

ENABLE:表示系統將執行這個事件;

-- ----------------------------
-- Event structure for `event_at`
-- ----------------------------
DROP EVENT IF EXISTS `event_at`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` EVENT `event_at` ON SCHEDULE AT '2016-01-17 15:30:00' ON COMPLETION NOT PRESERVE ENABLE DO 

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

查看結果,結果正確:

相關文章
相關標籤/搜索