在做活動的時候需要乙個定時器,在網上找個好幾個外掛程式都不太好用cron4j找個外掛程式又不能精確到秒,所以為了運算元據庫,就用了資料庫自己帶的定時執行任務。
1、首先要保證event事件是開啟狀態,預設情況下是關閉的,
set
global event_scheduler=1;
或者 set
global event_scheduler=no;
2、開始操作
set time_zone = '+8:00';
setglobal event_scheduler = 1;
建立乙個你要操作的表。我這個表在資料庫demo下面
create
table
`test2` (
`id`
int(11) not
null auto_increment,
`t_id`
int(11) not
null,
`t_name`
varchar(255) default
null,
primary
key (`id`)
) engine=innodb auto_increment=51
default charset=utf8;
選擇你要操作的資料庫也就是上面提到的demo
use test2
為了避免衝突,執行乙個刪除語句
drop event if
exists event_test
參考了一下別的東西很有幫助的就是設定分隔符,這一點我本來弄了好長時間
# 設定分隔符為 '$$' ,mysql預設的語句分隔符為 ';' ,這樣在後續的 create 到 end 這段**都會看成是一條語句來執行
delimiter $$
建立乙個任務,在每天10點19的時候開始執行
create event event_test
on schedule every day starts timestamp
'2018-02-28 10:19:00'
do# 開始該計畫任務要做的事
begin
insert test2 values(1,1,'test');
-- 結束計畫任務
end$$
# 將語句分割符設定回 ';'
delimiter ;
3、關閉和開啟事件
關閉事件
alter event event_test disable;
開啟事件
alter event event_test enable;
4、查詢事件是否開啟
select *from mysql.event
5、要檢視當前是否已開啟事件排程器,可執行如下sql:
show variables like 『event_scheduler』
6、.event的時間設定
設定event很簡單,但是麻煩的是如何設定執行的時間,網上找了一些,自己總結了一下。
先看語句,如下面這個
create event test_event on schedule every 1 day starts 『2012-09-24 00:00:00』
on completion preserve enable do call test_procedure();
every 後面的是時間間隔,可以選 1 second,3 minute,5 hour,9 day,1 month,1 quarter(季度),1 year
從2023年1月13號0點開始,每天執行一次
on schedule every 1 day starts 『2013-01-13 00:00:00』
從現在開始每隔九天定時執行
on schedule every 9 day starts now() ;
每個月的一號凌晨1 點執行
on schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour);
每個季度一號的凌晨1點執行
on schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),』-『,elt(quarter(curdate()),1,4,7,10),』-『,1)),interval 1 quarter),interval 1 hour);
每年1月1號凌晨1點執行
on schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),』-『,elt(quarter(curdate()),1,4,7,10),』-『,1)),interval 1 quarter),interval 1 hour);
注意:真實的開發環境中,會遇到mysql服務重啟或者斷電的情況,此時則會出現事件排程器被關閉的情況,所有事件都不在起作用,要想解決這個辦法,則需要在mysql.ini檔案中加入event_scheduler = on; 的語句
參考文獻:
mysql的定時執行任務
如下 show variables like event sche 查詢mysql的事件的狀態,預設是off啟動事件 set global event scheduler 1 設定事件為啟動狀態,資料庫重啟後失效在mysql workbench工具的資料庫中建立儲存過程的方法是選擇 stored p...
定時執行任務
在windows上,使用configuration task scheduler 任務計畫程式 task scheduler library 任務計畫程式庫 create task.或者 control panel scheduled tasks add a scheduled task.在linu...
定時執行任務
spring中可以通過配置方便的實現週期性定時任務管理,這需要用到以下幾個類 org.springframework.schedu ling.quartz.methodinvokingjobdetailfactorybean 配置需要排程的bean的某個方法 org.springframework....