共計 2767 個字符,預計需要花費 7 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 mysql 如何實現(xiàn) event,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1、開啟 mysql event(事件)
mysql show variables like %event_sch%
+—————–+——-+
| Variable_name | Value |
+—————–+——-+
| event_scheduler | OFF |
+—————–+——-+
1 row in set (0.00 sec)
開啟 event(事件)
vi /etc/my.cnf
[mysql]
event_scheduler=on
重啟數(shù)據(jù)庫
service mysql restart
mysql show variables like %event_sch%
+—————–+——-+
| Variable_name | Value |
+—————–+——-+
| event_scheduler | ON |
+—————–+——-+
1 row in set (0.00 sec)
2、創(chuàng)建 event
DELIMITER $$
CREATE event event_p2
ON SCHEDULE
EVERY 5 MINUTE
STARTS NOW()
DO
BEGIN
CALL p2(160105);
END$$
DELIMITER ;
3、查看 event
mysql show events\G;
*************************** 1. row ***************************
Db: report
Name: event_p2
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2016-05-10 20:09:50
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.00 sec)
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT comment]
DO sql_statement;
schedule:
AT timestamp [+ INTERVAL interval]
| EVERY interval [STARTS timestamp] [ENDS timestamp]
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
其中,
event_name:定時器名,最大長度 64 個字符,若未指定,則默認為當前的 MySQL 用戶名 (不區(qū)分大小寫);
schedule:限定執(zhí)行時間;
ON COMPLETION [NOT] PRESERVE:表示是否需要循環(huán)復用這個 Event;
sql_statement:要執(zhí)行的 SQL 語句(也可以使用存儲過程代替?zhèn)鹘y(tǒng)的 SQL 語句);
comment:對該時間調度器的一個注釋,最大長度 64 個字符;
【關閉事件】
ALTER EVENT event_name ON COMPLETION PRESERVE DISABLE;
【開啟事件】
ALTER EVENT event_name ON COMPLETION PRESERVE ENABLE;
【刪除事件】
DROP EVENT [IF EXISTS] event_name
【注意】:要使用定時器,MySQL 的常量 GLOBAL event_scheduler 必須為 on 或者是 1.
【范例】
1. 每天凌晨 1 點開始執(zhí)行數(shù)據(jù)更新:
CREATE EVENT [IF NOT EXISTS] E_testEvent_1
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
call p2();
end ;
2. 每月第一天凌晨 1 點開始執(zhí)行數(shù)據(jù)更新 (使用存儲過程):
CREATE EVENT E_testEvent_2
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL p2();
END
3. 每季度第一天凌晨 1 點開始執(zhí)行數(shù)據(jù)更新:
CREATE EVENT E_testEvent_3
ON SCHEDULE EVERY 1 QUARTER STARTS DATE_ADD(DATE_ADD(DATE( CONCAT(YEAR(CURDATE()), – ,ELT(QUARTER(CURDATE()),1,4,7,10), – ,1)),INTERVAL 1 QUARTER),INTERVAL 2 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
UPDATE _T_test SET col= 2 ;
以上是“mysql 如何實現(xiàn) event”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業(yè)資訊頻道!