1、 檢查你的mysql是否開了這個功能
show variables like 'event_scheduler';
我執行了一遍發現記錄為空說明我的mysql沒有開呢。ok解決辦法
2、 開啟你的mysql的計畫任務功能
使用這個功能之前必須確保event_scheduler已開啟,可執行
set global event_scheduler = 1;
或set global event_scheduler = on;
來開啟,也可以直接在啟動命令加上 「–event_scheduler=1」,例如:mysqld ... --event_scheduler=1
my.ini or my.cnf 中的
[mysqld]
新增 event_scheduler=on
二、建立事件(create event)
先來看一下它的語法:
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
1) 首先來看乙個簡單的例子來演示每秒插入一條記錄到資料表
use test;
create table aaa (timeline timestamp);
create event e_test_insert
on schedule every 1 second
do insert into test.aaa values (current_timestamp);
等待3秒鐘後,再執行查詢看看:
mysql> select * from aaa;
+---------------------+
| timeline |
+---------------------+
| 2007-07-18 20:44:26 |
| 2007-07-18 20:44:27 |
| 2007-07-18 20:44:28 |
+---------------------+
2) 5天後清空test表:
create event e_test
on schedule at current_timestamp + interval 5 day
do truncate table test.aaa;
3) 2023年7月20日12點整清空test表:
create event e_test
on schedule at timestamp '2007-07-20 12:00:00'
do truncate 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;
[enable | disable]可是設定該事件建立後狀態是否開啟或關閉,預設為enable。
[comment 『comment』]可以給該事件加上注釋。
三、修改事件(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;
四、刪除事件(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;
create event test
on schedule at '2007-09-01 12:00:00' + interval 1 day
on completion not preserve
do insert into yyy values('hhh','uuu');
解釋:從2007-09-01開始,每天對錶yyy在12:00:00進行乙個插入操作。而且只執行一次(on completion not preserve )
我的計畫任務為:
create event sysplan
on schedule at '2010-05-22 23:00:00' + interval 1 day
on completion not preserve
do truncate table bjproj.ae_tmp;
三、通過設定全域性變數event_scheduler 的值即可動態的控制事件排程器是否啟用。
檢視是否event_scheduler開啟 mysql> show variables like '%event%';
設定開啟 mysql> set global event_scheduler=on;
四、例子:
每分鐘插入一條日誌: delimiter // create event `user_log_event` on schedule every 1 minute starts '2010-12-27 00:00:00' on completion not preserve enable do begin insert into log set addtime=now(); end //
呼叫儲存過程: delimiter // create event `user_log_event` on schedule every 1 day starts '2010-00-00 00:00:00' on completion not preserve enable do begin call user_log_prov(); end // 轉
mysql計畫任務 event schedule
mysql的event schedule 可以讓你設定你的mysql資料庫再某段時間執行你想要的動作 這與檢視是不相同的。create event test1 on schedule every 1 day starts 2007 09 01 12 00 00 on completion not p...
使用MySQL計畫任務
原先,lamp的程式設計師為了完成一些週期性的資料庫操作任務,總是不得不借助於作業系統的幫助,比如windows的計畫任務,或者linux的contab。mysql5.1終於新增了event scheduler功能,可以直接在後台實現一下定時性的作業。但不知道什麼原因,在英文版的參考手冊中,位於觸發...
使用MySQL計畫任務
原先為了完成一些週期性的資料庫操作任務,總是不得不借助於作業系統的幫助,比如windows的計畫任務,或者linux的contab。mysql5.1終於新增了event scheduler功能,可以直接在後台實現一下定時性的作業。但不知道什麼原因,在英文版的參考手冊中,位於觸發器和檢視之間的第20章...