mysql的event事件

應用場景:購物商城發貨後15天,自動更改訂單狀態爲已收貨mysql

實現方式:event事件sql

實現步驟:
1.檢查mysql是否開啓了event事件,默認都是關閉狀態 SHOW VARIABLES LIKE 'event_scheduler'; 數據庫

clipboard.png

2.開啓event事件 SET GLOBAL event_scheduler = ON;安全

clipboard.png

3.建立函數函數

clipboard.png

使用存儲過程呢,咱們能夠定義的一系列sql語句的集合,涉及特定表或其它對象的任務,至於存儲過程和函數的區別呢,這裏就很少說了,或許以後會專門出一個文章吧!this

4.訂單記錄,因此入參確定是訂單號了spa

clipboard.png

5.接下來,就是要寫重點了調試

clipboard.png

這一步驟是先作了訂單的校驗,校驗經過後進行數據修改,把訂單狀態改成已收貨,而且插入收貨記錄code

6.選擇安全性、數據庫身份、數據訪問等,保存過程名爲updateorder,記得點擊運行,調試一下哦!
clipboard.png對象

7.而後在你的發貨代碼中寫以下語句

$this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$this->db->query('CREATE DEFINER=`root`@`localhost` EVENT `confirmorder'.$ordernumber.'` 
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 15 DAY ON COMPLETION NOT  
PRESERVE ENABLE DO call confirmorder("'.$ordernumber.'");');
$this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

8.每次發貨後,就能夠看到你的event事件了,注意哦,是One Time的,還能夠看到執行時間,我是選擇了7分鐘,而後到時間去看你的事件,這個事件不見了,沒錯,執行一次。

clipboard.png

clipboard.png

分享,是爲了讓本身的技術更紮實,歡迎交流,讓咱們共同進步~

相關文章
相關標籤/搜索