Mysql-event事件每秒调用存储过程

本文介绍了如何在MySQL中设置Event,以每秒调用一次存储过程。首先,检查数据库是否开启Event支持并调整为开启状态。接着,创建一个存储过程,特别处理了在更新自身表时的限制,使用LEFT JOIN来规避错误。最后,创建Event并配置为每秒执行存储过程`number_unlock()`。
摘要由CSDN通过智能技术生成

1.查询mysql数据库是否开启event事件支持

SHOW VARIABLES LIKE 'event_scheduler';

  若显示为OFF,用管理员账号修改为开启:

set global event_scheduler = on;

2.创建需要被调用的存储过程

DELIMITER |  
DROP PROCEDURE IF EXISTS number_unlock |  
CREATE PROCEDURE number_unlock()  
BEGIN  
    IF exists (select id from t_number_issue_detail where status='2' and SYSDATE() >= unlock_time) THEN  
            update t_number_issue_detail d left join t_number_issue_detail dd on d.id = dd.id set d.status ='1',d.unlock_time = null  
            where dd.status = '2' and SYSDATE() >= dd.unlock_time;  
    END IF;  
END   
 |  
DELIMITER;

注意:存储过程中的update语句查自身表中的数据作为条件修改自身表时,常规的update语句还是会报错:You can't specify target table 't_number_issue_detail' for update in FROM clause&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值