本範例展示如何建立資料表、存儲過程、啟用事件調度器,並創建每 10 秒自動執行一次的定時任務。
-- 1. 檢查/啟用事件調度器
SHOW VARIABLES LIKE '%event_sche%';
SET GLOBAL event_scheduler = 1; -- 開啟
-- SET GLOBAL event_scheduler = 0; -- 關閉
-- 2. 建立測試表
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL DEFAULT '',
`create_time` DATETIME,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 3. 建立存儲過程
DELIMITER //
DROP PROCEDURE IF EXISTS p_test//
CREATE PROCEDURE p_test()
BEGIN
INSERT INTO `test`(`name`, `create_time`) VALUES ('testName', NOW());
END//
-- 4. 建立定時事件
DROP EVENT IF EXISTS e_test//
CREATE EVENT e_test
ON SCHEDULE EVERY 10 SECOND
STARTS TIMESTAMP '2014-04-09 01:00:00'
ON COMPLETION PRESERVE
DO
BEGIN
CALL p_test();
END//
DELIMITER ;
| 操作 | SQL 指令 |
|---|---|
| 查看事件狀態 | SHOW EVENTS; |
| 啟用特定事件 | ALTER EVENT e_test ON COMPLETION PRESERVE ENABLE; |
| 禁用特定事件 | ALTER EVENT e_test ON COMPLETION PRESERVE DISABLE; |
| 刪除事件 | DROP EVENT IF EXISTS e_test; |