應用場景:購物商城發貨後15天,自動更改訂單狀態爲已收貨mysql
實現方式:event事件sql
實現步驟:
1.檢查mysql是否開啓了event事件,默認都是關閉狀態 SHOW VARIABLES LIKE 'event_scheduler'; 數據庫
2.開啓event事件 SET GLOBAL event_scheduler = ON;安全
3.建立函數函數
使用存儲過程呢,咱們能夠定義的一系列sql語句的集合,涉及特定表或其它對象的任務,至於存儲過程和函數的區別呢,這裏就很少說了,或許以後會專門出一個文章吧!this
4.訂單記錄,因此入參確定是訂單號了spa
5.接下來,就是要寫重點了調試
這一步驟是先作了訂單的校驗,校驗經過後進行數據修改,把訂單狀態改成已收貨,而且插入收貨記錄code
6.選擇安全性、數據庫身份、數據訪問等,保存過程名爲updateorder,記得點擊運行,調試一下哦!對象
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分鐘,而後到時間去看你的事件,這個事件不見了,沒錯,執行一次。
分享,是爲了讓本身的技術更紮實,歡迎交流,讓咱們共同進步~