亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1.什么是事件

一組SQL集,用來執行定時任務,跟觸發器很像,都是被動執行的,事件是因為時間到了觸發執行,而觸發器是因為某件事件(增刪改)觸發執行;

mqsql的事件類似于linux的定時任務,不過是完全在mqsql內部實現的。

事件是在一個獨立的事件調度線程中被初始化,這個事件調度線程和處理鏈接的線程沒有任何關系。并且該線程在事件執行結束后,會自動銷毀。

2.開啟事件

查看是否開啟:

show variables like 'event_scheduler';

最全總結:mysql中定時任務的用法

 

如果顯示OFF,則輸入以下語句開啟:

set global event_scheduler = on;

查看事件:

通過show events;可以查看創建的事件

3.創建自定義事件

首先創建一張測試表。

create table test_table
(
id int auto_increment primary key,
create_time datetime default CURRENT_TIMESTAMP null
)
comment '用來測試的表'
;

3.1 語法

CREATE EVENT [IFNOT EXISTS] event_name
   ONSCHEDULE schedule
   [ONCOMPLETION [NOT] PRESERVE]
   [ENABLE | DISABLE]
   [COMMENT ``'comment'``]
   DO sql_statement;
解釋:

event_name:自己取的事件名

schedule:觸發的時間周期。寫法為:

AT TIMESTAMP [+ INTERVAL INTERVAL]
或 EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

AT + 時間戳,用來完成單次的計劃任務

EVERY 時間(單位)的數量實踐單位[STARTS 時間戳] [ENDS時間戳],用來完成重復的計劃任務。

其中 INTERVAL 的取值又有每年/每月等等:

{YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
   WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
   DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

很多,但是常用的YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。剩下的不標準的不建議使用。

ON COMPLETION參數

表示"當這個事件不會再發生的時候",即當單次計劃任務執行完畢后或當重復性的計劃任務執行到了ENDS階段。而PRESERVE的作用是使事件在執行完畢后阻止該事件被Drop掉。所以,對于特定時間執行的事件,如果保持默認,執行完畢后,事件將被刪除,不想刪除的話要設置成ON COMPLETION PRESERVE。對于重復性時間,如果設置了ON COMPLETION NOT PRESERVE,那么也是只會在執行一次后停止并刪除事件。

[ENABLE | DISABLE] 可以設置該事件創建后狀態是否開啟或關閉,默認為ENABLE。

[COMMENT ‘comment’]可以給該事件加上注釋。

3.2 例子

3.2.1 每隔10秒插入一條記錄
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 10 SECOND
DO insert INTO test_table (create_time) VALUES (current_timestamp)

可以通過show events;查看剛創建的事件

最全總結:mysql中定時任務的用法

 

查看test_table

最全總結:mysql中定時任務的用法

 

3.2.2 在特定時間執行一次
CREATE EVENT e_test_insert_at
ON SCHEDULE AT TIMESTAMP '2020-05-28 11:00:00'
DO insert INTO test_table (create_time) VALUES (current_timestamp)
最全總結:mysql中定時任務的用法

 

到時間后,查看test_table

最全總結:mysql中定時任務的用法

 

確實執行了。再查看一下事件

最全總結:mysql中定時任務的用法

 

被刪除了。驗證了前面的ON COMPLETION參數

3.2.3 在指定延時后執行一次
CREATE EVENT e_test_insert_at
ON SCHEDULE AT CURRENT_TIMESTAMP+INTERVAL 50 SECOND
ONCOMPLETION PRESERVE
DO insert INTO test_table (create_time) VALUES (current_timestamp)

50秒后執行一次,并且不要完成后不要刪除任務。

最全總結:mysql中定時任務的用法

 

并且執行完成后,沒有被刪除

3.2.4 5分鐘后開始,每10秒插入一次
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 10 SECOND
STARTS CURRENT_TIMESTAMP+INTERVAL 5 MINUTE
DO insert INTO test_table (create_time) VALUES (current_timestamp)

Starts關鍵字,可以指定在什么時候開始

最全總結:mysql中定時任務的用法

 

3.2.5 指定時間后結束
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 10 SECOND
STARTS CURRENT_TIMESTAMP+INTERVAL 1 MINUTE
ENDS CURRENT_TIMESTAMP+INTERVAL 2 MINUTE
DO insert INTO test_table (create_time) VALUES (current_timestamp);

在當前1分鐘后開始,在當前2分鐘后結束。所以,只會執行1分鐘。

最全總結:mysql中定時任務的用法

 

3.2.6 每天的定時執行
CREATE EVENT e_test_insert_day
ON SCHEDULE EVERY 1 DAY
STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
DO insert INTO test_table (create_time) VALUES (current_timestamp);

每天1點執行一次。DATE_ADD是MySQL得內置函數,對某個時間加上指定時間。

3.2.7 每個月的29號0點30分執行一次
CREATE EVENT e_test_insert_month
ON SCHEDULE EVERY 1 MONTH
STARTS DATE_ADD(DATE_ADD('2020-04-29', INTERVAL 1 MONTH), INTERVAL 30 MINUTE)
DO insert INTO test_table (create_time) VALUES (current_timestamp);
3.2.8 每小時的30分時執行一次
CREATE EVENT e_test_insert_hour
ON SCHEDULE EVERY 1 HOUR
STARTS DATE_ADD('2020-05-28 13:30:00', INTERVAL 1 HOUR)
DO insert INTO test_table (create_time) VALUES (current_timestamp);

4,刪除事件

語法:

DROP EVENT [IF EXISTS] event_name

如果事件不存在,會報錯。所以執行時,最好加上IF EXISTS

5, 修改事件

語法:

ALTER EVENT event_name
[ON SCHEDULE schedule]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT ``'comment'``]
[ENABLE | DISABLE]
[DO sql_statement]
5.1 臨時關閉事件
ALTER EVENT e_test DISABLE;
5.2 開啟事件
ALTER EVENT e_test ENABLE;
5.3 將每天清空test表改為5天清空一次:
ALTER EVENT e_test ON SCHEDULE EVERY 5 DAY;

分享到:
標簽:定時 mysql
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定