Cómo progtwigr un procedimiento almacenado en MySQL

Tengo este procedimiento almacenado. ¿Cómo puedo ejecutar esto, por ejemplo, con intervalos de 5 segundos? ¿Como una rutina para eliminar datos con un sello de tiempo anterior a un día?

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 

Puede usar el progtwigdor mysql para ejecutarlo cada 5 segundos. Puede encontrar muestras en http://dev.mysql.com/doc/refman/5.1/en/create-event.html

Nunca lo usé, pero espero que esto funcione:

 CREATE EVENT myevent ON SCHEDULE EVERY 5 SECOND DO CALL delete_rows_links(); 

Utilicé esta consulta y funcionó para mí:

 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(); 

Para crear un cronjob, sigue estos pasos:

  1. ejecutar este comando: SET GLOBAL event_scheduler = ON;

  2. Si ERROR 1229 (HY000): Variable ‘event_scheduler’ es una variable GLOBAL y debe establecerse con SET GLOBAL: mportant

Es posible configurar el Progtwigdor de eventos en DESACTIVADO solo al inicio del servidor. Si event_scheduler está activado o desactivado, no puede configurarlo en DISABLED durante el tiempo de ejecución. Además, si el Progtwigdor de eventos está configurado en DESACTIVADO al inicio, no puede cambiar el valor de event_scheduler en el tiempo de ejecución.

Para deshabilitar el progtwigdor de eventos, use uno de los siguientes dos métodos:

  1. Como una opción de línea de comando al iniciar el servidor:

     --event-scheduler=DISABLED 
  2. En el archivo de configuración del servidor (my.cnf o my.ini en sistemas Windows): incluya la línea en la que el servidor leerá (por ejemplo, en una sección [mysqld]):

     event_scheduler=DISABLED 

    Lea la documentación de MySQL para más información.

      DROP EVENT IF EXISTS EVENT_NAME; CREATE EVENT EVENT_NAME ON SCHEDULE EVERY 10 SECOND/minute/hour DO CALL PROCEDURE_NAME(); 

Si está abierto a una solución fuera de la base de datos: puede configurar una tarea cron que ejecute una secuencia de comandos que llamará por sí misma al procedimiento.