檢視event是否開啟
複製**
**如下:
show variables like '%sche%';
將事件計畫開啟
複製**
**如下:
set global event_scheduler=1;
建立儲存過程test
複製**
**如下:
create procedure test ()
begin
update examinfo set endtime = now() where id = 14;
end;
建立event e_test
複製**
**如下:
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
每隔30秒將執行儲存過程test,將當前時間更新到examinfo表中id=14的記錄的endtime欄位中去.
關閉事件任務
複製**
**如下:
alter event e_test on
completion preserve disable;
開戶事件任務
複製**
**如下:
alter event e_test on
completion preserve enable;
以上測試均成功,測試環境為mysql 5.4.2-beta-community mysql communityserver(gpl)
mysql 計畫任務重啟後消失
我們只要修改一配置即可
event_scheduler在mysql的config中設定為off有關。去mysql中將配置改為on則就搞定了。
更詳細的大家可以往下看
mysql5.1.x版本中引入了一項新特性event,顧名思義就是事件、定時任務機制,在指定的時間單元內執行特定的任務,因此今後一些對資料定時性操作不再依賴外部程式,而直接使用資料庫本身提供的功能。
要檢視當前是否已開啟事件排程器,可執行如下sql:
show variables like 'event_scheduler';
或select @@event_scheduler;
或show processlist;
若顯示:
+-----------------+-------+
| variable_name
| value |
+-----------------+-------+
| event_scheduler | off
|+-----------------+-------+
則可執行
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秒鐘後,再執行查詢成功。
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]可以設定這個事件是執行一次還是持久執行,預設為notpreserve。
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錯誤,因此最好加上ifexists
drop event if exists e_test;
mysql 定時任務 生效 mysql定時任務
1.檢視是否開啟定時策略 show variables like event sche 若出現如下圖,則此時是關閉狀態 開啟定時策略 重啟無效 set global event scheduler 1 則需要在配置檔案my.ini的設定 重啟有效 mysqld event scheduler on ...
mysql定時任務
show variables like event scheduler 開啟定時任務 set global event scheduler on 定時更新 on completion not preserve 表示當事件不會再發生的情況下,刪除事件 注意特定時間執行的事件,如果設定了該引數,執行完畢...
mysql 定時任務
1 檢視event是否開啟 show variables like sche 2 將事件計畫開啟 set global event scheduler 1 3 建立 3.1 例 每天定時清空test表 create event e test on schedule every 1 daydo tru...