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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Mysql 中的事件//定时任务

發布時間:2023/12/15 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql 中的事件//定时任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 什么是事件
  • 開啟事件
  • 自定義事件舉例

什么是事件

一組SQL集,用來執行定時任務,跟觸發器很像,都是被動執行的,事件是因為時間到了觸發執行,而觸發器是因為某件事件(增刪改)觸發執行;

開啟事件

查看是否開啟:

show variables like 'event_scheduler';

如果顯示OFF,則輸入以下語句開啟:

set global event_scheduler = on;

提醒:雖然這里用set global event_scheduler = on語句開啟了事件,但是每次重啟電腦。或重啟mysql服務后,會發現,事件自動關閉(event_scheduler=OFF),所以想讓事件一直保持開啟,最好修改配置文件,讓mysql服務啟動的時候開啟時間,只需要在my.ini配置文件的[mysqld]部分加上event_scheduler=ON?即可,如下:

自定義事件舉例

首先、新建user表:

-- ---------------------------- -- Table structure for `user` -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(200) NOT NULL,`address` varchar(500) NOT NULL,`addtime` datetime NOT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后、新建事件,有兩種事件類型,一個是間隔觸發,另一個是特定事件觸發。

類型一:每隔一分鐘插入一條數據:

參數說明:

DEFINER:創建者;

ON COMPLETION [NOT] PRESERVE :表示當事件不會再發生的情況下,刪除事件(注意特定時間執行的事件,如果設置了該參數,執行完畢后,事件將被刪除,不想刪除的話可以設置成ON COMPLETION PRESERVE);

ENABLE:表示系統將執行這個事件;

-- ---------------------------- -- Event structure for `event_minute` -- ---------------------------- DROP EVENT IF EXISTS `event_minute`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` EVENT `event_minute` ON SCHEDULE EVERY 1 MINUTE STARTS '2016-01-17 14:49:43' ON COMPLETION NOT PRESERVE ENABLE DO

BEGININSERT INTO USER(name, address,addtime) VALUES('test1','test1',now());INSERT INTO USER(name, address,addtime) VALUES('test2','test2',now()); END ;; DELIMITER ;

類型二:特定時間插入一條數據,如2016-01-17 15:30:00

參數說明:

DEFINER:創建者;

ON COMPLETION [NOT] PRESERVE :表示當事件不會再發生的情況下,刪除事件(注意特定時間執行的事件,如果設置了該參數,執行完畢后,事件將被刪除,不想刪除的話可以設置成ON COMPLETION PRESERVE);

ENABLE:表示系統將執行這個事件;

-- ---------------------------- -- Event structure for `event_at` -- ---------------------------- DROP EVENT IF EXISTS `event_at`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` EVENT `event_at` ON SCHEDULE AT '2016-01-17 15:30:00' ON COMPLETION NOT PRESERVE ENABLE DO

BEGININSERT INTO USER(name, address,addtime) VALUES('AT','AT',now()); END ;; DELIMITER ;

查看結果,結果正確:

轉載于:https://www.cnblogs.com/fuhengheng/p/7998089.html

總結

以上是生活随笔為你收集整理的Mysql 中的事件//定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。

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