日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql中的竖线怎么用_Mysql event时间触发器,实现定时修改某些符合某一条件的某一字段...

發布時間:2023/12/19 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql中的竖线怎么用_Mysql event时间触发器,实现定时修改某些符合某一条件的某一字段... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我最近做項目遇到一個問題就是數據庫的的訂單需要定時檢查自己的訂單狀態,如果到了endtime字段的時間訂單狀態還是2,就將訂單狀態修改為4

在網上找到類似的解決方法。

定時的關鍵是要結合MySQL的某些時間函數。

如下文:

mysql可以實現定時觸發功能,比如說定于某某時間mysql數據庫做什么工作,或每隔多長時間做什么工作。

第二種情況應用還是比較廣的,比如說我希望每天檢查一下我的數據信息,超過一個月的無用信息清除以騰出空間供其他存儲數據使用;或者相隔一段時間更新一下數據等等。

下面討論下這種情況,給出一個例子供大家參考:

1.首先定義一個存儲過程取名為e_test,注意豎線(“|”)一定不能丟

DELIMITER |

DROP PROCEDURE IF EXISTS e_test |

CREATE PROCEDURE e_test()

BEGIN

update order set status=1 where to_days(now())-TO_DAYS(date)>=1and status=0;

END

|

假設有一個order表,并且表里有一個status字段和一個date字段,現在將date中的時間距現在時間超過1天的并且狀態status=0的這條數據的狀態status改成1。

2.創建定時器取名為event_test

SET GLOBAL event_scheduler = 1;?CREATE EVENT IF NOT EXISTS event_test

ON SCHEDULE EVERY 1 SECOND

ON COMPLETION PRESERVE

DO CALL e_test();

創建一個定時器,每間隔1秒觸發一次事件,即每個一秒執行一次上面定義的e_test這個存儲過程。

3.這個是最簡單但是也是最重要的,我們要手動的啟動這個定時器,要不然是沒法工作的。

ALTER EVENT event_test ON

COMPLETION PRESERVE ENABLE;

最后提醒一點,創建存儲過程與創建定時器代碼要分開執行,否則會報錯,暫時還不知道為什么,個人以為這個可能是數據庫創建好存儲過程需要一定的緩沖時間來做好準備,我們要認為的給他留出這個時間。當然這個時間對數據庫來說是一定的時間,但是對于我們來說僅僅是眨眼之間的功夫,只要分開兩次執行時間就足夠了。

個人的一點體會,希望對大家有幫助。

個別環境喲經常檢查show variables like '%event_scheduler%';,確保此數據庫權限已開就ok了

開啟event_scheduler sql指令:

SET GLOBAL event_scheduler = ON;

SET @@global.event_scheduler = ON;

SET GLOBAL event_scheduler = 1;

SET @@global.event_scheduler = 1;

相反,關閉event_scheduler指令:

SET GLOBAL event_scheduler = OFF;

SET @@global.event_scheduler = OFF;

SET GLOBAL event_scheduler = 0;

SET @@global.event_scheduler = 0;

總結

以上是生活随笔為你收集整理的mysql中的竖线怎么用_Mysql event时间触发器,实现定时修改某些符合某一条件的某一字段...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。