感谢 lxgwm2008 对MySQL之Event的分享,特此收藏, 查看文章; 最近工作正好需要用到这样的需求.
以下是简单应用
-- 查询事件触发器开关 -- SHOW VARIABLES LIKE 'event_sc%'; -- 打开触发器开关 SET GLOBAL event_scheduler = 1; -- 测试存储过程 DROP PROCEDURE IF EXISTS `up_report_proc_4_event`; CREATE PROCEDURE up_report_proc_4_event () BEGIN -- **************************************** -- -- ********* 要执行的语句内容 ************* -- -- **************************************** -- -- 表结构 -- DROP TABLE IF EXISTS `t_event_test`; -- CREATE TABLE `t_event_test` ( -- `id` int(11) NOT NULL AUTO_INCREMENT, -- `val` varchar(100) NOT NULL, -- PRIMARY KEY (`id`) -- ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; INSERT INTO VALUES (NULL, NOW()); END; -- 触发器, 每隔5秒执行一次存储过程 `up_report_proc_4_event` DROP EVENT IF EXISTS up_report_proc_4_event; CREATE EVENT up_report_proc_4_event ON SCHEDULE EVERY 5 SECOND ON COMPLETION PRESERVE DO CALL up_report_proc_4_event (); -- 将事件调度器为用户授权 -- root 用户名 -- iwifi 目标数据库 GRANT EVENT ON iwifi.* TO root; -- 开启事件 ALTER EVENT up_report_proc_4_event ON COMPLETION PRESERVE ENABLE; -- --------------------------------------------------------- -- 查询触发器信息 SELECT * -- e.LAST_ALTERED, -- e.LAST_EXECUTED FROM INFORMATION_SCHEMA. EVENTS e WHERE EVENT_NAME = 'up_report_proc_4_event';