mysql event使用,用MySQL的Event設置定時任務執行sql語句 | 老瘋子

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

查看Event事件是否開啟

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

SHOW?VARIABLESLIKE'event_scheduler';

dac164008b32ef655ec6178ae92be9eb.png

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

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

SETGLOBALevent_scheduler?=?1;

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

811a5e494ad7c1789bcda3dd2914c468.png

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’,可用的時間單位有很多,列表如下圖:

3e950382abf01dac396d5b06c53ca550.png

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;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530521.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530521.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php如何配置微信公眾號環境,微信公眾平臺開發之配置與請求

一、配置參數define(WEIXIN_APPID, wxzzzzzzzz);define(WEIXIN_APPSECRET, ouewjdsaudsamkh);define(WEIXIN_TOKEN, 9973833232232);define(WEIXIN_NOTIFY_URL, http://xx.com/xx/xx);define(WEIXIN_MCHID, 322221121);define(WEIXIN_KEY, xddsdswewew);1)微信公眾號開發中IDWE…

MATLAB設置x為0到10所有數,MATLAB教學_10數值微積分

本文學習視頻地址:https://www.bilibili.com/video/av68228488?p10課堂PPT以及本人學習代碼已上傳。本文學習內容:多項式的微分和積分數值的微分和積分目錄多項式的表示方法polyval()polyder()16分鐘練習conv()polyint()Numerical Differentiation39分鐘…

php header 404 nginx,ThinkPHP在nginx下怎么設置?路由統統404,瘋了~

本地用MAMP跑的代碼,運行沒問題。但是部署到CENTOS 6.8 NGINX服務器上的時候,路由地址都404了![可以訪問] http://something.com/API/public/index.php[404] http://something.com/API/public/index.php/consult_add折騰一晚上了。。簡直了&a…

vue怎么使用php調取數據,vue 數據操作

pushpopshiftunshiftsplicesortreverse{{ item.message }} #var example new Vue({el: #example,data: {items: [{message: Foo },{message: Bar },{message: Baz }],addValue:{message:match}},methods:{push(){//接收任意數量的參數,把它們逐個添加到數組末尾&am…

php strchr 截斷,PHP strchr() 函數

w3school 教程PHP String 函數查找 "world" 在 "Hello world!" 中的第一次超并返回此字符串的其余個別:echo strchr("Hello world!","world");?>運行實例strchr() 函數搜他串在另一字符串中的第一次常該函數是 strstr(…

matlab與專業應用,MATLAB應用技術--在電氣工程與自動化專業中的應用

第1章 MATLAB基本知識.1.1 MATLAB簡介1.1.1 概述1.1.2 MATLAB安裝與運行1.2 MATLAB的基本操作1.2.1 MATLAB語言結構1.2.2 MATLAB常用命令1.2.3 MATLAB的M文件1.2.4 輸入與輸出函數1.3 MATLAB的矩陣運算1.3.1 矩陣的實現1.3.2 矩陣的運算1.4 MATLAB的向量運算1.5 MATLAB的控制語…

php 單一職責原則,Laravel深入學習8 - 單一責任原則

聲明:本文并非博主原創,而是來自對《Laravel 4 From Apprentice to Artisan》閱讀的翻譯和理解,當然也不是原汁原味的翻譯,能保證90%的原汁性,另外因為是理解翻譯,肯定會有錯誤的地方,歡迎指正。…

matlab aic sic,sic是什么意思_sic的翻譯_音標_讀音_用法_例句_愛詞霸在線詞典

全部In the mud -- En ange e il mondo ! [ sic ] ( 6 )污泥里 —— Efangoeilmondo! ( 六 )漢英文學 - 圍城Fixed - seal & rotational - seal are made of various msterials, SIC, Carbon, Ceramic and can withstand various chemicals.固定環 及 轉動環由各種不同材質…

centos6.3 nginx php,CentOS 6.3下nginx、php-fpm、drupal快速部署

一切本著從簡原則來做,能yum/rpm的,堅決不手工編譯 :)本次部署環境基于CentOS 6.3 x86_64系統。0. 準備工作#更新yum[rootimysql ~]# yum -y update[rootimysql ~]# yum install libaio-devel.x86_64#drupal 8.0需要用到curl模塊[rootimysql ~]# yum ins…

鏈路追蹤php,easyswoole鏈路追蹤

TrackerEasyswoole提供了一個基礎的追蹤組件,方便用戶實現基礎的服務器狀態監控,與調用鏈記錄。組件要求php: >7.1.0ext-swoole: ^4.4.0easyswoole/component: ^2.0安裝方法composer require easyswoole/tracker倉庫地址調用鏈Easyswoole的調用鏈跟蹤…

razor java,如何在Razor中聲明局部變量?

我正在asp.net mvc 3中開發一個Web應用程序。我對它很新。 在使用剃刀的視圖中,我想聲明一些局部變量并在整個頁面中使用它。 如何才能做到這一點?能夠執行以下操作似乎相當微不足道:bool isUserConnected string.IsNullOrEmpty(Model.Creat…

amp 符號 php,php中引用符號(amp;)的使用詳解_PHP教程

與C語言中的指針是有差別的.C語言中的指針里面存儲的是變量的內容在內存中存放的地址變量的引用.PHP 的引用允許你用兩個變量來指向同一個內容復制代碼 代碼如下:$a"ABC";$b &$a;echo $a;//這里輸出:ABCecho $b;//這里輸出:ABC…

oracle ora 00283,【案例】Oracle報錯ORA-16433非歸檔丟失redo無法啟動的恢復過程

天萃荷凈Oracle研究中心案例分析:運維DBA反映Oracle數據庫處理非歸檔模式,redo文件損壞常規修復無法正常open數據庫。本站文章除注明轉載外,均為本站原創: 轉載自love wife & love life —Roger 的Oracle技術博客本文鏈接地址…

win7卸載oracle12c,Windows7上完全卸載Oracle 12c操作步驟

Windows7上完全卸載Oracle 12c操作步驟1.關閉Oracle所有的服務,按【winR】運行【services.msc】找到所有Oracle開頭的服務(OracleVssWriterORCLOracleServiceORCLOracleOraDB12Home1TNSListenerOracleOraDB12Home1MTSRecoveryServiceOracleJobSchedulerORCL),點擊停止。2.使用O…

圖像灰度映射實驗MATLAB,圖像灰度變換實驗報告

實驗2a 圖像的灰度變換一、實驗目的:學會用Matlab軟件對圖像進行運算和灰度變換。二、實驗內容:用、-、*、/、imabsdiff、imadd、imcomplment、imdivide、imlincomb、immultiply、imsubtract和imadjust等函數生成各類灰度變換圖像。三、實驗相關知識1、代…

oracle深度巡檢指標,oracle DBA 巡檢項目

11.Oracle審計-AUD$占用空間較大處理方案truncate 或者 delete sys.aud$ 表在delete 之前,可以先把aud$表exp備份一下,注意,不要直接exp,先創建一張臨時表,然后將臨時表exp。sql>create table audit_record tablesp…

eclipse oracle驅動位置,【求助】eclipse導入了Oracle的驅動包連不上Oracle

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓代碼:package com.sp;import java.sql.*;//演示JDBC連接public class OraDemo2 {public static void main(String[] args) throws ReflectiveOperationException, SQLException {// TODO Auto-generated method stub//1…

oracle系統實驗,實驗1 啟動Oracle系統

啟動Oracle系統一、開啟Oracle服務1、控制面板---管理工具----服務---或Oracle中的配置和移植工具—Oracle Administration Assistant for Windows 用右鍵單擊“數據庫中的SID名”,選擇啟動服務啟動以下服務:OracleService 對應數據庫實例OracleTNSListe…

linux怎樣擴容目錄,Linux系統下對目錄擴容的方法介紹

1、現象:日志服務器當初考慮不周,分區劃分不太合理:2、目標:將/home磁盤空間縮減 并將新的磁盤分區擴充到/根目錄卸載/home分區并壓縮分區卸載/home時 提示目標忙,fuser -m /home查看誰用/home時提示沒有fuser命令[ro…