日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

1.什么是事件

一組SQL集,用來(lái)執(zhí)行定時(shí)任務(wù),跟觸發(fā)器很像,都是被動(dòng)執(zhí)行的,事件是因?yàn)闀r(shí)間到了觸發(fā)執(zhí)行,而觸發(fā)器是因?yàn)槟臣录ㄔ鰟h改)觸發(fā)執(zhí)行;

mqsql的事件類(lèi)似于linux的定時(shí)任務(wù),不過(guò)是完全在mqsql內(nèi)部實(shí)現(xiàn)的。

事件是在一個(gè)獨(dú)立的事件調(diào)度線程中被初始化,這個(gè)事件調(diào)度線程和處理鏈接的線程沒(méi)有任何關(guān)系。并且該線程在事件執(zhí)行結(jié)束后,會(huì)自動(dòng)銷(xiāo)毀。

2.開(kāi)啟事件

查看是否開(kāi)啟:

show variables like 'event_scheduler';

最全總結(jié):mysql中定時(shí)任務(wù)的用法

 

如果顯示OFF,則輸入以下語(yǔ)句開(kāi)啟:

set global event_scheduler = on;

查看事件:

通過(guò)show events;可以查看創(chuàng)建的事件

3.創(chuàng)建自定義事件

首先創(chuàng)建一張測(cè)試表。

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

3.1 語(yǔ)法

CREATE EVENT [IFNOT EXISTS] event_name
   ONSCHEDULE schedule
   [ONCOMPLETION [NOT] PRESERVE]
   [ENABLE | DISABLE]
   [COMMENT ``'comment'``]
   DO sql_statement;
解釋?zhuān)?/h5>

event_name:自己取的事件名

schedule:觸發(fā)的時(shí)間周期。寫(xiě)法為:

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

AT + 時(shí)間戳,用來(lái)完成單次的計(jì)劃任務(wù)

EVERY 時(shí)間(單位)的數(shù)量實(shí)踐單位[STARTS 時(shí)間戳] [ENDS時(shí)間戳],用來(lái)完成重復(fù)的計(jì)劃任務(wù)。

其中 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。剩下的不標(biāo)準(zhǔn)的不建議使用。

ON COMPLETION參數(shù)

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

[ENABLE | DISABLE] 可以設(shè)置該事件創(chuàng)建后狀態(tài)是否開(kāi)啟或關(guān)閉,默認(rèn)為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)

可以通過(guò)show events;查看剛創(chuàng)建的事件

最全總結(jié):mysql中定時(shí)任務(wù)的用法

 

查看test_table

最全總結(jié):mysql中定時(shí)任務(wù)的用法

 

3.2.2 在特定時(shí)間執(zhí)行一次
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)
最全總結(jié):mysql中定時(shí)任務(wù)的用法

 

到時(shí)間后,查看test_table

最全總結(jié):mysql中定時(shí)任務(wù)的用法

 

確實(shí)執(zhí)行了。再查看一下事件

最全總結(jié):mysql中定時(shí)任務(wù)的用法

 

被刪除了。驗(yàn)證了前面的ON COMPLETION參數(shù)

3.2.3 在指定延時(shí)后執(zhí)行一次
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秒后執(zhí)行一次,并且不要完成后不要?jiǎng)h除任務(wù)。

最全總結(jié):mysql中定時(shí)任務(wù)的用法

 

并且執(zhí)行完成后,沒(méi)有被刪除

3.2.4 5分鐘后開(kāi)始,每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關(guān)鍵字,可以指定在什么時(shí)候開(kāi)始

最全總結(jié):mysql中定時(shí)任務(wù)的用法

 

3.2.5 指定時(shí)間后結(jié)束
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);

在當(dāng)前1分鐘后開(kāi)始,在當(dāng)前2分鐘后結(jié)束。所以,只會(huì)執(zhí)行1分鐘。

最全總結(jié):mysql中定時(shí)任務(wù)的用法

 

3.2.6 每天的定時(shí)執(zhí)行
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點(diǎn)執(zhí)行一次。DATE_ADD是MySQL得內(nèi)置函數(shù),對(duì)某個(gè)時(shí)間加上指定時(shí)間。

3.2.7 每個(gè)月的29號(hào)0點(diǎn)30分執(zhí)行一次
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 每小時(shí)的30分時(shí)執(zhí)行一次
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,刪除事件

語(yǔ)法:

DROP EVENT [IF EXISTS] event_name

如果事件不存在,會(huì)報(bào)錯(cuò)。所以執(zhí)行時(shí),最好加上IF EXISTS

5, 修改事件

語(yǔ)法:

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 臨時(shí)關(guān)閉事件
ALTER EVENT e_test DISABLE;
5.2 開(kāi)啟事件
ALTER EVENT e_test ENABLE;
5.3 將每天清空test表改為5天清空一次:
ALTER EVENT e_test ON SCHEDULE EVERY 5 DAY;

分享到:
標(biāo)簽:定時(shí) mysql
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定