Mysql資料庫事件使用與樣本

來源:互聯網
上載者:User

標籤:int   管理   insert   mys   組成   div   enable   win   strong   

1 事件簡介

    事件(event)是MySQL在相應的時刻調用的過程式資料庫物件。一個事件可調用一次,也可周期性的啟動,它由一個特定的線程來管理的,也就是所謂的“事件調度器”。

    事件和觸發器類似,都是在某些事情發生的時候啟動。當資料庫上啟動一條語句的時候,觸發器就啟動了,而事件是根據調度事件來啟動的。由於他們彼此相似,所以事件也稱為臨時性觸發器。

    事件取代了原先只能由作業系統的計劃任務來執行的工作,而且MySQL的事件調度器可以精確到每秒鐘執行一個任務,而作業系統的計劃任務(如:Linux下的CRON或Windows下的任務計劃)只能精確到每分鐘執行一次。

2 事件的優缺點
    2.1 優點

    一些對資料定時性操作不再依賴外部程式,而直接使用資料庫本身提供的功能。

    可以實現每秒鐘執行一個任務,這在一些對即時性要求較高的環境下就非常實用了。

    2.2 缺點
    定時觸發,不可以調用。

3 事件建立

  一條create event語句建立一個事件。每個事件由兩個主要部分組成,第一部分是事件調度(event schedule),表示事件何時啟動以及按什麼頻率啟動,第二部分是事件動作(event action ),這是事件啟動時執行的代碼,事件的動作包含一條SQL語句,它可能是一個簡單地insert或者update語句,也可以使一個預存程序或者benin...end語句塊,這兩種情況允許我們執行多條SQL。

    一個事件可以是活動(開啟)的或停止(關閉)的,活動意味著事件調度器檢查事件動作是否必須調用,停止意味著事件的聲明儲存在目錄中,但調度器不會檢查它是否應該調用。在一個事件建立之後,它立即變為活動的,一個活動的事件可以執行一次或者多次。

  一、   如果開啟事件

    在使用事件這個功能,首先要保證你的mysql的版本是5.1以上,然後還要查看你的mysql伺服器上的事件是否開啟。

    查看事件是否開啟,使用如下命令查看:

    SHOW VARIABLES LIKE ‘event_scheduler‘;  

            

    通過動態參數修改 SET GLOBAL event_scheduler = ON;

    更改完這個參數就立刻生效了  注意:還是要在my.ini 中添加event_scheduler=ON。因為如果沒有添加的話,mysql重啟事件又會回到原來的狀態了。

 建立語句方式:

create event [ if not exists  ] EVENT_NAME 

on schedule SCHEDULE

[ on completion [ not ] preserve ]  //not即計劃任務執行完畢後自動刪除該事件,預設操作。

[ enable | disable ]

[ comment COMMENT ]

do SQL;

  注釋:所有中括弧([])中的內容為可寫選項(下同)

 

       EVENT_NAME:你自己想要設定的事件名稱

       SCHEDULE :    方式一: at TIMESTAMP(必須是‘2017-09-11 17 :00:00‘ 這種格式) 

            方式二: every INTERVAL(整數值)  UNIT(時間單位,可以是:YEAR | QUARTER | MONTH | DAY | HOUR| MINUTE |WEEK | SECOND | YEAR_MONTH |DAY_HOUR                  |DAY_MINUTE|DAY_SECOND| HOUR_MINUTE |HOUR_SECOND| MINUTE_SECOND) 

                    [  starts  TIMESTAMP(同上)  [ + interval(必須寫) INTERVAL(整數值) UNIT(同上) ]  ]  

                 [  ends TIMESTAMP(同上)   [ + interval(必須寫) INTERVAL(整數值) UNIT(同上) ] ]

        COMMENT:填寫的注釋,utf8字元集時不能是中文。長度也不能超過64個位元組。

        SQL:需要執行的sql語句。(可以是預存程序)

  

   注意:

         通過show events只能查看當前庫中建立的事件

      事件執行完即釋放,如立即執行事件,執行完後,事件便自動刪除,多次呼叫事件或等待執行事件可以查看到。

      如果兩個事件需要在同一時刻調用,mysql會確定調用他們的順序,如果要指定順序,需要確保一個事件至少在另一個事件1秒後執行

      對於遞迴調度的事件,結束日期不能在開始日期之前。

      select可以包含在一個事件中,然而他的結果消失了,就好像沒執行過。

4  事件修改

變更事件的文法

ALTER

    EVENT event_name

    [ON SCHEDULE schedule]

    [ON COMPLETION [NOT] PRESERVE]

    [RENAME TO new_event_name]

    [ENABLE | DISABLE | DISABLE ON SLAVE]

    [COMMENT ‘comment‘]

    [DO event_body]

   注意:這裡的大寫是必須這麼寫的,小寫同建立的代名詞一樣。   

5  事件刪除  

DROP EVENT [IF EXISTS]  event_name(代名詞)

            

 

Mysql資料庫事件使用與樣本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.