MySQL事件的创建和执行
生活随笔
收集整理的這篇文章主要介紹了
MySQL事件的创建和执行
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
建立一個MySQL事件,首先我們需要建立一個或多個儲存過程。示例如下
CREATE DEFINER=`vike0906`@`localhost` PROCEDURE `forTest`()LANGUAGE SQLNOT DETERMINISTICCONTAINS SQLSQL SECURITY DEFINERCOMMENT '' BEGINSET @startTime = date_sub(curdate(),INTERVAL 0 DAY);SET @testSql=CONCAT("INSERT INTO hot_ali_bind (uid, channel, ali_num, ali_name, updatetime)(SELECT a.uid uid, b.channel channel, a.u_high ali_num, a.u_name ali_name, ? updatetimeFROM hot_userinfo a LEFT JOIN hot_call_deduction_log b ON a.uid = b.userId WHERE a.id = 319)");PREPARE stmt FROM @testSql;EXECUTE stmt USING @startTime;DEALLOCATE PREPARE stmt; END過程體:
BEGINSET @startTime = date_sub(curdate(),INTERVAL 0 DAY);SET @testSql=CONCAT("INSERT INTO hot_ali_bind (uid, channel, ali_num, ali_name, updatetime)(SELECT a.uid uid, b.channel channel, a.u_high ali_num, a.u_name ali_name, ? updatetimeFROM hot_userinfo a LEFT JOIN hot_call_deduction_log b ON a.uid = b.userId WHERE a.id = 319)");PREPARE stmt FROM @testSql;EXECUTE stmt USING @startTime;DEALLOCATE PREPARE stmt; END緊接著我們來建立一個一分鐘執行一次的事件:
CREATE DEFINER=`vike0906`@`localhost` EVENT `ceshi`ON SCHEDULEEVERY 1 MINUTE STARTS '2018-03-22 16:53:23'ON COMPLETION PRESERVEENABLECOMMENT '我是備注'DO BEGINCALL forTest();END一個事件可以執行多個儲存過程,只需要添加CALL xx();就行
在時間建立完成后發現事件并沒有按我們設想的去執行,此時我們需要去查看數據庫的事件是否開啟(兩條SQL作用一樣)
show variables like 'event%';show variables like 'event_scheduler';結果如圖:
| Variable_name | Value |
| event_scheduler | OFF |
?
?
此時我們需要開啟事件(兩條SQL作用一樣):
set global event_scheduler = NO;set global event_scheduler = 1;至此我們發現事件已經能夠按我們設想的那樣執行了。
另.
在my.cnf中添加event_scheduler=ON,可以使MySQL數據庫在重啟時事件自動開啟,Windos下是my.ini,在MySQL的安裝目錄。
?
轉載于:https://www.cnblogs.com/vike0906/p/8628622.html
總結
以上是生活随笔為你收集整理的MySQL事件的创建和执行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NOIP2012 模拟试题二 腾讯大战3
- 下一篇: 网络安全通识全解|第6期 一文读懂关键信