日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql event使用,用MySQL的Event设置定时任务执行sql语句 | 老疯子

發布時間:2025/3/8 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql event使用,用MySQL的Event设置定时任务执行sql语句 | 老疯子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

想在每天某個特定時間段定時執行一條sql語句命令,來進行數據庫的備份或者更新刪除等,可以直接使用MySQL自帶的定時任務Event事件來執行操作。需要注意的是Event事件是在MySQL 5.1版本中新增的,還有一點就是確保你有MySQL數據庫的root管理權限,因為Event默認是關閉狀態需要用root權限開啟 下面會給出開啟方法。

查看Event事件是否開啟

1、查看MySQL是否開啟event,執行下面的命令。

SHOW?VARIABLESLIKE'event_scheduler';

如果顯示OFF,說明是關閉狀態需要開啟。

2、 開啟event,使用下面的命令 。

SETGLOBALevent_scheduler?=?1;

執行完后再次查看event狀態,ON為開啟。

Event 事件語法說明

語法

CREATE

[DEFINER?=?{?user|CURRENT_USER}]

EVENT

[IF?NOTEXISTS]

event_name

ONSCHEDULE?schedule

[ONCOMPLETION?[NOT]?PRESERVE]

[ENABLE?|?DISABLE?|?DISABLE?ONSLAVE]

[COMMENT?'string']

DO?event_body;

schedule:

ATtimestamp[+?INTERVAL?interval]?...

|?EVERY?interval

[STARTS?timestamp[+?INTERVAL?interval]?...]

[ENDS?timestamp[+?INTERVAL?interval]?...]

interval:

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

語法說明

DEFINER:指定可執行該定時器的MySQL賬號,user的格式是’user_name’@’host_name’,CURRENT_USER或CURRENT_USER(),注意,單引號是需要在語句中輸入的。如果不指定,默認是DEFINER = CURRENT_USER。

event_name:事件名稱,最大64個字符,不區分大小寫,MyEvent和myevent是一樣的,命名規則和其他MySQL對象是一樣的。

ON SCHEDULE schedule: 指定何時執行,下文詳細說明。

[ON COMPLETION [NOT] PRESERVE]:可選,preserve是保持的意思,這里是說這個定時器第一次執行完成以后是否還需要保持,如果是NOT PRESERVE,該定時器只執行一次,完成后自動刪除事件;沒有NOT,該定時器會多次執行,可以理解為這個定時器是持久性的。默認是NOT PRESERVE。

[ENABLE | DISABLE | DISABLE ON SLAVE]:可選,是否啟用該事件,ENABLE-啟用,DISABLE-禁用,可使用alter event語句修改該狀態。DISABLE ON SLAVE是指在主備復制的數據庫服務器中,在備機上也創建該定時器,但是不執行。

COMMENT: 注釋,必須用單引號括住。

DO event_body:事件要執行的SQL語句,可以是一個SQL,也可以是使用BEGIN和END的復合語句,和存儲過程相同。

ON SCHEDULE 事件的執行時間

ON SCHEDULE指定事件何時執行,執行的頻率和執行的時間段,有AT和EVERY兩種形式。

AT(在指定的時間只執行一次)

AT語法AT timestamp,用于只執行一次事件。執行的時間由timestamp指定,timestamp必須包含完整的日期和時間,即年月日時分秒都要有。可以使用DATETIME或TIMESTAMP類型,或者可以轉換成時間的值,例如“2018-01-21 00:00:00”。如果指定是時間是過去的時間,該事件不會執行,并會生成警告。

可以使用CURRENT_TIMESTAMP(當前時間的意思)指定執行時間,這樣的話,事件創建成功會立即執行。

如果事件執行的時間是未來的某個時間點,可以使用+ INTERVAL interval指定具體時間。interval有數字(quantity) 和 時間單位(Unit of time)兩部分組成,例如:2分10秒后執行,應寫為 + INTERVAL ‘2:10’,可用的時間單位有很多,列表如下圖:

AT小例子

1小時后執行該事件。創建名字為myevent的事件,ON SCHEDULE指定時間,DO要執行的sql語句

CREATE

EVENT?myevent

ONSCHEDULE

SCHEDULE?ATCURRENT_TIMESTAMP+?INTERVAL?1HOUR

DO

UPDATEmyschema.mytableSETmycol?=?mycol?+?1;

Every(每間隔多久執行一次)

如果需要讓事件定時執行,使用Every這種方式。注意Every后邊沒有+ INTERVAL,時間格式和單位和上面的相同。

Every小例子

EVERY?20?second每20秒執行一次

CREATE

EVENT?myevent

ONSCHEDULE

EVERY?20?second

DO

UPDATEmyschema.mytableSETmycol?=?mycol?+?1;

EVERY后面可以跟可選的STARTS和ENDS,指定事件開始和結束時間,在這個時間段內,時間定時執行。STARTS和ENDS可同時指定,或者只指定STARTS,或兩者都不指定。

更多案例

EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + INTERVAL 1 WEEK 一周以后開始,每隔三個月

EVERY 2 WEEK STARTS CURRENT_TIMESTAMP + INTERVAL ‘6:15’ HOUR_MINUTE 六個小時15分鐘以后,每隔兩周

EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK 30分鐘以后開始,4周后結束,每隔12個小時

例子:每天凌晨執行

use 指定名為WordPress的數據庫,在每天凌晨將wp_vod數據表中的,vod_day字段值設為0

use?WordPress;

CREATE

EVENT?myevent

ONSCHEDULE

EVERY?1?DAYSTARTS?'2019-01-01?00:00:00'

DO

updatewp_vodsetvod_day?=?0;

刪除Event事件

語句很簡單 ,后面myevent為事件名

dropevent?myevent;

MySQL服務器重啟 斷電會導致事件關閉

整個服務器重啟、斷電會導致event事件恢復成默認OFF關閉狀態,想解決這個問題,則需要在mysql.ini文件中修改加入event_scheduler?=?ON;

總結

以上是生活随笔為你收集整理的mysql event使用,用MySQL的Event设置定时任务执行sql语句 | 老疯子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。