感谢 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';