建立和使用MySQL計劃事件

 查看事件調度程序線程的狀態: 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]
  • 第三,將SQL語句放在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());

刪除MySQL事件

要刪除現有事件,請使用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

相關文章
相關標籤/搜索