MySQL事件的创建和执行

建立一个MySQL事件,首先我们需要建立一个或多个储存过程。示例如下

CREATE DEFINER=`vike0906`@`localhost` PROCEDURE `forTest`()
    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
    SET @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, ? updatetime
    FROM 
    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

过程体:

BEGIN
    SET @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, ? updatetime
    FROM 
    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 SCHEDULE
        EVERY 1 MINUTE STARTS '2018-03-22 16:53:23'
    ON COMPLETION PRESERVE
    ENABLE
    COMMENT '我是备注'
    DO BEGIN

CALL forTest();

END

一个事件可以执行多个储存过程,只需要添加CALL xx();就行

在时间建立完成后发现事件并没有按我们设想的去执行,此时我们需要去查看数据库的事件是否开启(两条SQL作用一样)

show variables like 'event%';

show variables like 'event_scheduler';

结果如图:

Variable_nameValue
event_schedulerOFF

 

 

此时我们需要开启事件(两条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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 事件是一种定时执行的机制,它可以周期性地执行一些操作,比如备份数据库、清理日志等。下面是 MySQL 事件创建和使用方法: 1. 创建事件 创建事件需要以下步骤: 1)打开 MySQL 客户端。 2)创建事件语法: CREATE EVENT event_name ON SCHEDULE schedule DO event_body; 其中,event_name 为事件名称,schedule 为事件执行的时间表达式,event_body 为事件执行的 SQL 语句。 3)执行创建事件语句。 例如,创建一个每天晚上十点执行备份数据库事件: CREATE EVENT backup_database ON SCHEDULE EVERY 1 DAY STARTS '2022-01-01 22:00:00' DO BEGIN -- 备份数据库的 SQL 语句 BACKUP DATABASE mydb TO '/backup/mydb.sql'; END 2. 修改事件 如果需要修改事件,可以使用 ALTER EVENT 语句。例如,修改备份数据库事件执行时间为每周一晚上十点: ALTER EVENT backup_database ON SCHEDULE EVERY 1 WEEK STARTS '2022-01-03 22:00:00'; 3. 查看事件 可以使用 SHOW EVENTS 语句查看所有事件的信息。例如,查看备份数据库事件的信息: SHOW EVENTS LIKE 'backup_database'; 4. 启动/停止事件 可以使用 ALTER EVENT 语句启动/停止事件。例如,停止备份数据库事件执行: ALTER EVENT backup_database DISABLE; 启动事件的语法为: ALTER EVENT event_name ENABLE; 5. 删除事件 可以使用 DROP EVENT 语句删除事件。例如,删除备份数据库事件: DROP EVENT backup_database; 注意:使用 MySQL 事件需要开启事件调度器,可以在 my.cnf 文件中添加以下配置: event_scheduler=ON 或者在 MySQL 客户端中执行以下语句: SET GLOBAL event_scheduler=ON; 以上就是 MySQL 事件创建和使用方法。使用事件可以方便地定时执行一些操作,提高数据库的管理效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值