use*_*318 45 mysql database stored-procedures mysql-routines
我有这个存储过程.我怎么能以5秒的间隔运行它?就像消除数据的例程一样,时间戳超过一天?
DROP PROCEDURE IF EXISTS `delete_rows_links`
GO
CREATE PROCEDURE delete_rows_links
BEGIN
DELETE activation_link
FROM activation_link_password_reset
WHERE TIMESTAMPDIFF(DAY, `time`, NOW()) < 1 ;
END
GO
Run Code Online (Sandbox Code Playgroud)
zer*_*kms 70
您可以使用mysql调度程序每5秒运行一次.您可以在http://dev.mysql.com/doc/refman/5.1/en/create-event.html找到样本.
从未使用它,但我希望这会工作:
CREATE EVENT myevent
ON SCHEDULE EVERY 5 SECOND
DO
CALL delete_rows_links();
Run Code Online (Sandbox Code Playgroud)
小智 12
我使用了这个查询,它对我有用:
CREATE EVENT `exec`
ON SCHEDULE EVERY 5 SECOND
STARTS '2013-02-10 00:00:00'
ENDS '2015-02-28 00:00:00'
ON COMPLETION NOT PRESERVE ENABLE
DO
call delete_rows_links();
Run Code Online (Sandbox Code Playgroud)
要创建cronjob,请按照下列步骤操作:
运行此命令:SET GLOBAL event_scheduler = ON;
如果ERROR 1229(HY000):变量'event_scheduler'是GLOBAL变量,应使用SET GLOBAL设置:mportant
只有在服务器启动时才可以将事件调度程序设置为DISABLED.如果event_scheduler为ON或OFF,则无法在运行时将其设置为DISABLED.此外,如果事件调度程序在启动时设置为DISABLED,则无法在运行时更改event_scheduler的值.
要禁用事件调度程序,请使用以下两种方法之一:
作为启动服务器时的命令行选项:
--event-scheduler=DISABLED
Run Code Online (Sandbox Code Playgroud)在服务器配置文件(my.cnf或Windows系统上的my.ini)中:包括服务器将读取的行(例如,在[mysqld]部分中):
event_scheduler=DISABLED
Run Code Online (Sandbox Code Playgroud)
阅读MySQL 文档以获取更多信息.
DROP EVENT IF EXISTS EVENT_NAME;
CREATE EVENT EVENT_NAME
ON SCHEDULE EVERY 10 SECOND/minute/hour
DO
CALL PROCEDURE_NAME();
Run Code Online (Sandbox Code Playgroud)