查看事件調度程序線程的狀態: html
SHOW PROCESSLIST;
要啓用和啓動事件調度程序線程命令:mysql
SET GLOBAL event_scheduler = ON;
禁用和中止事件調度程序線程:sql
SET GLOBAL event_scheduler = OFF;
建立和計劃新事件,請使用CREATE EVENT
語句,以下所示:數據庫
CREATE EVENT [IF NOT EXIST] event_name ON SCHEDULE schedule DO event_body
讓咱們詳細地查看上面的語句。測試
CREATE EVENT
子句以後指定事件名稱。 事件名稱在數據庫模式中必須是惟一的。ON SCHEDULE
子句以後放置一個調度。 若是事件是一次性事件,則使用語法:AT timestamp [+ INTERVAL]
;若是事件是重複事件,則使用EVERY
子句:EVERY interval STARTS timestamp [+INTERVAL] ENDS timestamp [+INTERVAL]
。DO
關鍵字後面。要注意的是,能夠在事件的主體內調用存儲過程。若是有複合SQL語句,能夠將它們放在BEGIN END
塊中。首先,使用CREATE TABLE
語句建立一個名爲messages
的新表,以下所示:CREATE TABLEmessages
CREATE TABLE IF NOT EXISTS messages ( id INT PRIMARY KEY AUTO_INCREMENT, message VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL );
第二步,使用CREATE EVENT
語句建立事件:spa
CREATE EVENT IF NOT EXISTS test_event_01 ON SCHEDULE AT CURRENT_TIMESTAMP DO INSERT INTO messages(message,created_at) VALUES('測試MySQL事件執行(1)',NOW());
第三步,查看messages表; 就會看到表中有1條記錄。這意味着建立事件時執行它。線程
SELECT * FROM messages;
要顯示數據庫模式的全部事件,請使用如下語句:code
SHOW EVENTS FROM studymysql;
例子:
該事件在建立完成1分鐘後執行,而且在執行後不會刪除。htm
CREATE EVENT test_event_02 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE ON COMPLETION PRESERVE DO INSERT INTO messages(message,created_at) VALUES('測試MySQL事件執行(2)',NOW());
如下語句建立每隔一分鐘執行一次而且在建立時間後1小時內過時的重複事件:事件
CREATE EVENT test_event_03 ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO INSERT INTO messages(message,created_at) VALUES('測試MySQL重複事件',NOW());
要刪除現有事件,請使用DROP EVENT
語句,以下所示:
DROP EVENT [IF EXIST] event_name;
例如,要刪除test_event_03
事件,請使用如下語句:
DROP EVENT [IF EXIST] test_event_03;
待續...................
參考連接: 建立和使用MySQL計劃事件
https://www.aliyun.com/jiaocheng/mysql?spm=5176.100033.1.3.31152197VX5mlP