1. 程式人生 > >Mysql定時任務job實現案例

Mysql定時任務job實現案例

現在的專案業務需要用到mysql的job。因為之前接觸過oracle job。現在整理一下MySQL得job。

#檢視當前是否已開啟事件排程器
show variables like 'event_scheduler';

在這裡插入圖片描述

#要想保證能夠執行event事件,就必須保證定時器是開啟狀態,預設為關閉狀態
set global event_scheduler =1;
#或者set GLOBAL event_scheduler = ON;

在這裡插入圖片描述

delimiter $$
 # 每天晚上01:00
create event SetEVToInvalidStatus_AtNight_0100  
#on schedule every 1 DAY   starts timestamp '2017-04-24 10:00:00'
# 測試使用 10 MINUTE  
on schedule every 10 MINUTE  starts timestamp '2018-11-30 11:10:10'
do
begin
    start transaction; #開始事務
    # 表1
   #select  * from  customer  where commonPool="";
    # 表2
    update customer set commonPool=1  where cust_sex='1';
    commit;  #提交事務

end  $$
delimiter ;

# 停止
ALTER EVENT SetEVToInvalidStatus_AtNight_0100  DISABLE;
# 開啟
alter event SetEVToInvalidStatus_AtNight_0100  enable;

# 檢視狀態
select * from mysql.event

在這裡插入圖片描述
最後結果:
在這裡插入圖片描述

注意事項:真實的開發環境中,會遇到mysql服務重啟或者斷電的情況,此時則會出現事件排程器被關閉的情況,所有事件都不在起作用,要想解決這個辦法,則需要在mysql.ini檔案中加入event_scheduler = ON; 的語句