Come pianificare una stored procedure in MySQL

Ho questa stored procedure. Come posso eseguire questo ad esempio con intervalli di 5 secondi? Come una routine per eliminare i dati con una data e ora maggiore di un giorno?

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 

Puoi usare mysql scheduler per eseguirlo ogni 5 secondi. Puoi trovare esempi su http://dev.mysql.com/doc/refman/5.1/en/create-event.html

Mai usato, ma spero che questo funzioni:

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

Ho usato questa query e ha funzionato per me:

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

Per creare un cronjob, segui questi passaggi:

  1. eseguire questo comando: SET GLOBAL event_scheduler = ON;

  2. Se ERRORE 1229 (HY000): La variabile ‘event_scheduler’ è una variabile GLOBAL e deve essere impostata con SET GLOBAL: mportante

È ansible impostare l’Event Scheduler su DISABLED solo all’avvio del server. Se event_scheduler è ON o OFF, non è ansible impostarlo su DISABLED in fase di runtime. Inoltre, se l’Event Scheduler è impostato su DISABLED all’avvio, non è ansible modificare il valore di event_scheduler in fase di runtime.

Per disabilitare lo scheduler degli eventi, utilizzare uno dei seguenti due metodi:

  1. Come opzione da riga di comando all’avvio del server:

     --event-scheduler=DISABLED 
  2. Nel file di configurazione del server (my.cnf o my.ini su sistemi Windows): includere la riga in cui verrà letta dal server (ad esempio, in una sezione [mysqld]):

     event_scheduler=DISABLED 

    Leggi la documentazione di MySQL per maggiori informazioni.

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

Se si è aperti a una soluzione fuori dal DB: è ansible impostare un processo cron che esegua uno script che chiamerà esso stesso la procedura.