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 ;

查看结果,结果正确:

相关文章
相关标签/搜索