當前位置:首頁 » 存儲配置 » mysql存儲過程定時任務

mysql存儲過程定時任務

發布時間: 2024-11-09 13:13:44

『壹』 mysql如何保存代碼

mysql通過觸發器保存代碼。根據查詢相關公開信息:MySQL允許通過觸發器、存儲過程、函數的形式來存儲代碼,從5.1開始,還可以在定時任務中存放代碼,這個定時任務也稱為事件。

『貳』 mysql存儲過程 和 觸發器的優缺點 問題

缺點是觸發器的缺點,
而有點是存儲過程的優點,
所以推薦使用存儲過程。

『叄』 【MYSQL】存儲過程 循環插入數據

在開發工作中,時常需要模擬數據生成,手動添加顯然效率不高。這時,MySQL的存儲過程就派上了用場。

首先,打開Navicat,找到工具欄中的函數選項,然後選擇新建功能,定位到過程選項。無需設置入參,簡單點擊即可完成步驟一。

接下來,編寫循環插入的核心代碼。只需將代碼段中的表名和欄位名替換為你實際需要的,例如設置一個簡單的WHILE循環,如'i'從1開始,當'i'小於或等於2時,循環執行兩次,如:WHILE (i<=2)。

完成後,保存你的存儲過程。在右側操作欄,單擊運行按鈕,即可執行預設的循環插入操作。這樣,你就可以快速生成所需數量的數據了。

存儲過程的好處在於,一旦創建並保存,後續任何時候需要在相同函數目錄下使用這些數據生成,都能直接調用,非常方便快捷。

『肆』 mysql怎麼讓一個存儲過程定時執行

mysql怎麼讓一個存儲過程定時執行
查看event是否開啟: show variables like '%sche%';
將事件計劃開啟: set global event_scheler=1;
關閉事件任務: alter event e_test ON COMPLETION PRESERVE DISABLE;
開戶事件任務: alter event e_test ON COMPLETION PRESERVE ENABLE;

簡單實例.
創建表 CREATE TABLE test(endtime DATETIME);

創建存儲過程test
CREATE PROCEDURE test ()
BEGIN
update examinfo SET endtime = now() WHERE id = 14;
END;

創建event e_test
CREATE EVENT if not exists e_test
on schele every 30 second
on completion preserve
do call test();

每隔30秒將執行存儲過程test,將當前時間更新到examinfo表中id=14的記錄的endtime欄位中去

1) 首先來看一個簡單的例子來演示每秒插入一條記錄到數據表

USE test;
CREATE TABLE aaa (timeline TIMESTAMP);
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 1 SECOND
DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);
等待3秒鍾後,再執行查詢看看:

mysql> SELECT * FROM aaa;
+---------------------+
| timeline |
+---------------------+
| 2007-07-18 20:44:26 |
| 2007-07-18 20:44:27 |
| 2007-07-18 20:44:28 |
+---------------------+
2) 5天後清空test表:

CREATE EVENT e_test
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
3) 2007年7月20日12點整清空test表:

CREATE EVENT e_test
ON SCHEDULE AT TIMESTAMP '2007-07-20 12:00:00'
DO TRUNCATE TABLE test.aaa;
4) 每天定時清空test表:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
DO TRUNCATE TABLE test.aaa;
5) 5天後開啟每天定時清空test表:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
6) 每天定時清空test表,5天後停止執行:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
7) 5天後開啟每天定時清空test表,一個月後停止執行:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
DO TRUNCATE TABLE test.aaa;
[ON COMPLETION [NOT] PRESERVE]可以設置這個事件是執行一次還是持久執行,默認為NOT PRESERVE。
8) 每天定時清空test表(只執行一次,任務完成後就終止該事件):

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ON COMPLETION NOT PRESERVE
DO TRUNCATE TABLE test.aaa;
[ENABLE | DISABLE]可是設置該事件創建後狀態是否開啟或關閉,默認為ENABLE。
[COMMENT 『comment』]可以給該事件加上注釋。

三、修改事件(ALTER EVENT)
ALTER EVENT event_name
[ON SCHEDULE schele]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT 'comment']
[ENABLE | DISABLE]
[DO sql_statement]
1) 臨時關閉事件

ALTER EVENT e_test DISABLE;
2) 開啟事件

ALTER EVENT e_test ENABLE;
3) 將每天清空test表改為5天清空一次:

ALTER EVENT e_test
ON SCHEDULE EVERY 5 DAY;
四、刪除事件(DROP EVENT)
語 法很簡單,如下所示:

DROP EVENT [IF EXISTS] event_name
例如刪除前面創建的e_test事件

DROP EVENT e_test;
當然前提是這個事件存在,否則會產生ERROR 1513 (HY000): Unknown event錯誤,因此最好加上IF EXISTS

DROP EVENT IF EXISTS e_test;

create event test
ON SCHEDULE AT '2007-09-01 12:00:00' + INTERVAL 1 DAY
on completion not preserve
do insert into yyy values('hhh','uuu');

解釋:從2007-09-01開始,每天對表yyy在12:00:00進行一個插入操作。而且只執行一次(on completion not preserve )

我的計劃任務為:

create event sysplan
ON SCHEDULE AT '2010-05-22 23:00:00' + INTERVAL 1 DAY
on completion not preserve
do truncate table bjproj.ae_tmp;

三、通過設定全局變數event_scheler 的值即可動態的控制事件調度器是否啟用。
查看是否event_scheler開啟mysql> SHOW VARIABLES LIKE '%event%';
設置開啟mysql> SET GLOBAL event_scheler=ON;
四、例子:

分鍾插入一條日誌:DELIMITER //CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1
MINUTE STARTS '2010-12-27 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO
BEGIN INSERT INTO log SET addtime=NOW();END//
調用存儲過程:DELIMITER
//CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 DAY STARTS
'2010-00-00 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
CALL user_log_prov();END//

『伍』 Mysql中event用法詳解,零基礎快速入門必看

MySQL中的Event功能詳解,是資料庫對象中用於時間觸發的工具,它類似於Linux的crontab計劃任務,會在預設的時間自動執行SQL語句或存儲過程,實現定時任務。對於那些需要定期執行的任務,如每月第一天的銷售匯總、定期表結構維護等,Event都能派上用場。

創建Event的語法如下:首先,使用CREATE EVENT命令,如果事件不存在則創建,如果已存在則檢查。語法包括事件名、執行時間調度(如單次或重復執行)、執行完成後是否保留、事件狀態(啟用或禁用)以及事件注釋和實際執行內容。例如,創建一個每3秒執行一次的存儲過程的Event,可以寫為:

CREATE EVENT event_name
ON SCHEDULE EVERY 1 SECOND
[ON COMPLETION PRESERVE] -- 保留事件
[DISABLE] -- 禁用事件
COMMENT '備份學生表數據'
DO
BEGIN
-- 存儲過程student_bak_pro的調用
CALL student_bak_pro();
END;

執行時間的設置可以精確到秒、分鍾、小時、天、周或月,如每天20點執行:

ON SCHEDULE EVERY 1 DAY STARTS '2021-06-16 20:00:00'

查看或管理Event,可以使用ALTER或DELETE語句。例如,要檢查或修改event student_bak_pro的設置,可以使用ALTER EVENT命令。

在實際應用中,如定時備份student表,可以先創建student_bak表用於備份,編寫student_bak_pro存儲過程,然後創建Event定時調用該存儲過程,最後驗證新插入的student表數據是否同步到了student_bak表中。

熱點內容
方舟編譯器與虛擬機 發布:2024-11-22 19:44:15 瀏覽:141
nas存儲應用場景 發布:2024-11-22 19:17:07 瀏覽:976
美年大健康體檢查詢密碼是什麼 發布:2024-11-22 19:14:49 瀏覽:747
wps存儲找不到了 發布:2024-11-22 19:09:21 瀏覽:524
蘋果訪問報告 發布:2024-11-22 19:06:03 瀏覽:658
區域網訪問虛擬主機 發布:2024-11-22 19:01:05 瀏覽:517
安卓怎麼玩英雄聯盟手游最後有個圖片 發布:2024-11-22 18:55:58 瀏覽:749
阿里雲伺服器承載量 發布:2024-11-22 18:52:26 瀏覽:500
android正則匹配 發布:2024-11-22 18:49:29 瀏覽:535
壓縮營養品 發布:2024-11-22 18:17:57 瀏覽:221