• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養德,非澹薄無以明志,非寧靜無以致遠。
            隨筆 - 398, 文章 - 0, 評論 - 196, 引用 - 0
            數據加載中……

            如何寫mysql的定時任務

            mysql的定時任務一般用event(事件)來完成,觸發器無法完成。
            一、通過mysql的命令行客戶端來完成
            1、set global event_scheduler =1; //開啟event_scheduler
            執行這個語句如果出現,可在mysql的配置文檔中設置[mysqld]段中添加 event_scheduler=ON
            如果重啟mysql;這種情況下依然出錯,Error Code: 1290. The MySQL server is running with the --event-scheduler=DISABLED 
            or --skip-grant-tables option so it cannot execute this statement,這個錯誤是說啟動服務器時如果指定了--skip-grant-tables選項,則event_scheduler則自動被設置為DISABLED。命令行或配置文件的設置都會被覆蓋。建議重現安裝mysql或是修改啟動參數(在系統服務中指定)。

            查看event_scheduler狀態:show status like '%event%'; 或SELECT @@event_scheduler;
            2、CREATE PROCEDURE Mypro() //創建存儲過程

            BEGIN
            update userinfo SET endtime = now() WHERE id = '155';
            END;
            3、創建event My_enevt,每隔三十秒執行一次
            create event if not exists e_test
            on schedule every 30 second
            on completion preserve
            do call Mypro();
            4、關閉事件
            alter event e_test ON COMPLETION PRESERVE DISABLE;
            5、開啟事件
            alter event e_test ON COMPLETION PRESERVE ENABLE;
            語法:
            CREATE EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION
            [NOT] PRESERVE] [ENABLE | DISABLE] [COMMENT 'comment'] DO sql_statement;
            schedule: AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL [STARTS TIMESTAMP]
            [ENDS TIMESTAMP] INTERVAL: quantity {YEAR | QUARTER | MONTH | DAY | HOUR |
            MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND |
            HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

            示例:

            1) 首先來看一個簡單的例子來演示每秒插入一條記錄到數據表
            CREATE EVENT e_test_insert ON SCHEDULE EVERY 1 SECOND DO INSERT INTO test.aaa VALUES  (CURRENT_TIMESTAMP);

            2) 5天后清空test表:
            CREATE EVENT e_test ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY DO TRUNCATE TABLE test.aaa;

            3) 2013年7月20日12點整清空test表:
            CREATE EVENT e_test ON SCHEDULE AT TIMESTAMP '2013-07-20 12:00:00' DOTRUNCATE TABLE test.aaa;

            4) 每天定時清空test表:
            CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY DO TRUNCATE TABLE test.aaa;

            5) 5天后開啟每天定時清空test表:
            CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY DO TRUNCATE TABLE test.aaa;

            6) 每天定時清空test表,5天后停止執行:
            CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY DO TRUNCATE TABLE test.aaa;

            7) 5天后開啟每天定時清空test表,一個月后停止執行:
            CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP +
            INTERVAL 5 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH DO TRUNCATE TABLE test.aaa;

            [ON COMPLETION [NOT] PRESERVE]可以設置這個事件是執行一次還是持久執行,默認為NOT PRESERVE
            8)
            每天定時清空test表(只執行一次,任務完成后就終止該事件):
            CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY ON COMPLETION NOT PRESERVE DO TRUNCATE TABLE test.aaa;

            [COMMENT
            comment]可以給該事件加上注釋

            2>修改事件(ALTER EVENT)
            ALTER EVENT event_name [ON SCHEDULE schedule] [RENAME TO new_event_name]
            [ON COMPLETION [NOT] PRESERVE] [COMMENT 'comment'] [ENABLE | DISABLE] [DO
            sql_statement]

            1) 臨時關閉事件
            ALTER EVENT e_test DISABLE;

            2) 開啟事件
            ALTER EVENT e_test ENABLE;

            3) 將每天清空test表改為5天清空一次:
            ALTER EVENT e_test ON SCHEDULE EVERY 5 DAY;

            3>刪除事件(DROP EVENT)

            語法很簡單,如下所示:
            DROP EVENT [IF EXISTS] event_name

            例如刪除前面創建的e_test事件
            DROP EVENT e_test;

            當然前提是這個事件存在,否則會產生ERROR 1513 (HY000): Unknown event錯誤,因此最好加上IF EXISTS
            DROP EVENT IF EXISTS e_test;

            二、使用第三方工具來創建,推薦使用HeidiSQL網站:http://www.heidisql.com/,免費的開源客戶端,由德國程序員Ansgar Becker開發;這個軟件的界面有中文界面。
            打開HeidiSQL,右鍵單擊表名,選創建新的的菜單,再選事件即可,很方便,我們可以編輯事件的時間設置和代碼。這里定義人填寫root@localhost。

            posted on 2013-09-05 19:11 Benjamin 閱讀(2595) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫

            久久久精品一区二区三区| 欧美伊人久久大香线蕉综合| 国产成人综合久久综合| 久久精品无码一区二区app| 久久亚洲国产成人影院| 久久精品国产亚洲AV嫖农村妇女| 国产精品九九久久免费视频| 久久久www免费人成精品| 狠狠色丁香久久综合五月| 亚洲欧洲精品成人久久奇米网| 久久国产亚洲高清观看| 欧美亚洲国产精品久久久久| 国产A级毛片久久久精品毛片| 亚洲欧洲日产国码无码久久99| 久久久精品久久久久特色影视| 久久精品亚洲精品国产色婷| 精品久久久久久国产免费了| 成人久久久观看免费毛片| 日韩乱码人妻无码中文字幕久久| 久久综合给合综合久久| 亚洲成色999久久网站| 伊人久久大香线蕉亚洲五月天 | 精品熟女少妇AV免费久久| 国产午夜免费高清久久影院 | 女同久久| 亚洲人成无码久久电影网站| 麻豆国内精品久久久久久| 亚洲国产精品久久久久久| 7777久久亚洲中文字幕| 亚洲午夜无码久久久久| 久久亚洲私人国产精品| 久久久亚洲欧洲日产国码aⅴ | 久久久婷婷五月亚洲97号色| 亚洲国产精品18久久久久久| 久久无码人妻一区二区三区| 精品一二三区久久aaa片| 国内精品久久久久影院薰衣草 | 久久精品九九亚洲精品天堂| 99久久www免费人成精品| 久久久久综合国产欧美一区二区| 精品久久久久久国产牛牛app|