日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Mysql編寫(xiě)定時(shí)任務(wù)事件

系統(tǒng) 2370 0
原文: Mysql編寫(xiě)定時(shí)任務(wù)事件

場(chǎng)景:

  例如:某系統(tǒng),用戶每天只能擁有一次的抽獎(jiǎng)機(jī)會(huì),抽過(guò)后當(dāng)天就不可再抽,但是過(guò)了24:00點(diǎn)后用戶就重新?lián)碛幸淮纬楠?jiǎng)機(jī)會(huì)。像這種 需要數(shù)據(jù)庫(kù)定時(shí)對(duì)某個(gè)字段進(jìn)行更新操作的任務(wù),完全可以通過(guò)數(shù)據(jù)庫(kù)本身的事件機(jī)制進(jìn)行操作,而服務(wù)器端也不需要用額外的代碼進(jìn)行這種監(jiān)控定時(shí)的操作。

Mysql:

  本文討論的是Mysql數(shù)據(jù)庫(kù),Event Scheduler事件調(diào)度器應(yīng)該是在Mysql5.1引入的,所以使用定時(shí)任務(wù)調(diào)度時(shí),請(qǐng)注意查看你的Mysql版本。

創(chuàng)建事件調(diào)度的語(yǔ)法:

      
        
          /*
        
        
          創(chuàng)建事件event_name
        
        
          */
        
        
           DELIMITER $$ 
        
        
          CREATE
        
         event 
        
          IF
        
        
          NOT
        
        
          EXISTS
        
        
           event_name 
        
        
          ON
        
         SCHEDULE 任務(wù)條件 




        
          ON
        
        
           COMPLETION PRESERVE DO SQL操作 DELIMITER ;
        
      
    

實(shí)例情景 :每半個(gè)小時(shí)更新統(tǒng)計(jì)字段count為0,

      
        
          /*
        
        
          創(chuàng)建定時(shí)定時(shí)更新count字段事件
        
        
          */
        
        
           DELIMITER $$ 
        
        
          CREATE
        
         event 
        
          IF
        
        
          NOT
        
        
          EXISTS
        
        
           update_count 
        
        
          ON
        
         SCHEDULE EVERY 30 MINUTE 
      
      

/*MYSQL注意時(shí)區(qū)設(shè)置,默認(rèn)非中國(guó)時(shí)區(qū)*/
STARTS TIMESTAMP '2009-12-18 02:58:00' ON COMPLETION PRESERVE DO update tb_count set count=0 $$ DELIMITER ;

如上,創(chuàng)建了一個(gè)名叫update_count的事件,執(zhí)行條件則為每30分鐘執(zhí)行一次,(EVERY 30 MINUTE),執(zhí)行Sql為(update tb_count set count=0), 當(dāng)然你可能會(huì)按天執(zhí)行, 所以你也可以寫(xiě)(EVERY 1 DAY),

如果執(zhí)行的任務(wù)Sql復(fù)雜,我們可以寫(xiě)觸發(fā)器,直接看示例代碼:

      
        
          DELIMITER $$ 
        
        
          DROP
        
        
          PROCEDURE
        
        
          IF
        
        
          EXISTS
        
        
           update_count$$ 
        
        
          CREATE
        
        
          PROCEDURE
        
        
           update_count() 
        
        
          BEGIN
        
        
          UPDATE
        
         tb_count 
        
          SET
        
         count
        
          =
        
        
          0
        
        
          ; 
        
        
          END
        
        
          $$ DELIMITER ;
        
      
    

以上為創(chuàng)建一個(gè)存儲(chǔ)過(guò)程update_count,執(zhí)行對(duì)tb_count中count字段的更新。任務(wù)中代碼中do字段后則改為 (call update_count() $$) 。當(dāng)然你可能會(huì)更復(fù)雜的需求。

添加完event后,還需要查看event_scheduler是否開(kāi)啟,否則添加的event不會(huì)執(zhí)行,移步下面的代碼:

      
        
          /*
        
        
          查看event是否開(kāi)啟
        
        
          */
        
        
           SHOW VARIABLES 
        
        
          LIKE
        
        
          '
        
        
          %sche%
        
        
          '
        
        
          ; 
        
        
          /*
        
        
          開(kāi)啟event
        
        
          */
        
        
          SET
        
         GLOBAL event_scheduler
        
          =
        
        
          1
        
        ;
      
    

查看和關(guān)閉你所添加的event:

?

      
        
          /*
        
        
          關(guān)閉 event 
        
        
          */
        
        
          ALTER
        
         event update_count 
        
          ON
        
        
           COMPLETION PRESERVE DISABLE; 
        
        
          /*
        
        
          啟用 event 
        
        
          */
        
        
          ALTER
        
         event update_count 
        
          ON
        
         COMPLETION PRESERVE ENABLE;
      
    

?更多MySql語(yǔ)法可查看: http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html

Mysql編寫(xiě)定時(shí)任務(wù)事件


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 青海省| 印江| 临汾市| 保亭| 古蔺县| 大宁县| 盐池县| 福安市| 威信县| 肇东市| 临泽县| 丹寨县| 霍山县| 于田县| 湛江市| 出国| 咸丰县| 呼玛县| 明溪县| 双柏县| 黎城县| 高台县| 白沙| 石家庄市| 穆棱市| 万宁市| 清水县| 杂多县| 库车县| 白朗县| 米林县| 斗六市| 墨江| 唐河县| 古田县| 阿尔山市| 都安| 吉首市| 临清市| 伊金霍洛旗| 鄂尔多斯市|