一、什么是事件一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行; 二、开启事件查看是否开启: show variables like 'event_scheduler'; 如果显示OFF,则输入以下语句开启: set global event_scheduler = on; 三、自定义简单的事件新建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; 新建一个事件,每隔一分钟插入一条数据: 参数说明: DEFINER:创建者; ON COMPLETION [NOT] PRESERVE :表示当事件不会再发生的情况下,删除事件(注意特定时间执行的事件,如果设置了该参数,执行完毕后,事件将被删除,不想删除的话可以设置成ON COMPLETION PRESERVE); 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 新建一个事件,特定时间2016-01-17 15:30:00插入一条数据 -- ---------------------------- -- 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 查看结果,结果正确: |
|