60 votes

Comment planifier une procédure stockée dans MySQL

J'ai cette procédure stockée. Comment puis-je exécuter ceci par exemple avec des intervalles de 5 secondes ? Comme une routine pour éliminer les données avec un horodatage plus ancien qu'un jour ?

 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

88voto

zerkms Points 105994

Vous pouvez utiliser le planificateur mysql pour l'exécuter toutes les 5 secondes. Vous pouvez trouver des exemples sur http://dev.mysql.com/doc/refman/5.1/en/create-event.html

Je ne l'ai jamais utilisé mais j'espère que cela fonctionnera :

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

15voto

Nero Points 63

J'ai utilisé cette requête et cela a fonctionné pour moi:

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

4voto

Vache Points 13219

Si vous êtes ouvert à une solution hors de la base de données : vous pouvez configurer une tâche cron qui exécute un script qui appellera lui-même la procédure.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X