問題背景:
1、表1設備清單表,
2、表2設備巡檢周期表(日檢、周檢、月檢、季度檢、半年檢、年檢、自定義檢查)
3、表2外鍵關聯表1、一個設備可以有多種巡檢方式。
4、表3 設備巡檢記錄表,記錄設備巡檢清單及巡檢狀態(未巡檢、已巡檢)
問題描述:
1、每月1日0點自動生成本月設備巡檢資料并寫入表3
2、寫入時巡檢狀態默認未巡檢。
請高手不吝賜教,不勝感激。
uj5u.com熱心網友回復:
mysql event了解一下uj5u.com熱心網友回復:
可以使用event定時器,設定每個月執行一下,生成一份設備檢查執行表。根據檢查型別,設定回圈體,生成當月不同型別的檢查執行明細表。
delimiter $$
drop event if exists addplan; -- 創建定時器
create event addplan
on schedule
EVERY 1 MONTH -- 每個月執行一次
STARTS '2019-07-28 22:02:00' -- 定時器執行開始時間
ON COMPLETION PRESERVE ENABLE
do
begin
DECLARE pdate TIMESTAMP; -- 定義變數執行日期
DECLARE sdate TIMESTAMP; -- 定義變數
SET sdate = CURRENT_TIMESTAMP; -- 變數取當前時間
SET pdate = CURRENT_TIMESTAMP;
WHILE pdate < ADDDATE(sdate,INTERVAL +1 MONTH) DO -- 判斷執行日期在當月內,回圈
INSERT INTO result(devid,devname,checksta,checktime) (SELECT A.devid,A.devname,'未巡檢',pdate FROM devinfo A,devcheck B WHERE A.devid=B.devchid AND B.check='daycheck'); -- 插入日檢計劃明細
set pdate = ADDDATE(pdate,INTERVAL +1 DAY); -- 根據前面插入的檢查型別,執行日期+1天
END WHILE; -- 結束回圈
end $$
delimiter;
插入sql處可以根據不同巡檢型別插入,執行日期間隔需根據檢查型別來設定,比如月檢,ADDDATE(pdate,INTERVAL +1 Month),以此類推。
最后我們來看下結果:
SELECT * FROM result;

希望對你有幫助
uj5u.com熱心網友回復:
謝謝大咖知道uj5u.com熱心網友回復:
謝謝大咖指導轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/26614.html
標籤:MySQL
