procedimientos procedimiento modificar insertar funciones eliminar ejercicios ejemplos crear busqueda almacenados almacenado almacenadas mysql database stored-procedures mysql-routines

modificar - Cómo programar un procedimiento almacenado en MySQL



procedimientos almacenados mysql workbench (4)

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


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 Programador 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 Programador 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 programador 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 documentation 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.


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