Comment supprimer un enregistrement MySQL après un certain temps
Je veux supprimer quelques messages de ma base de données MySQL après 7 jours.
Mon message de lignes de la table ont le format suivant:
id | message | date
La date est un timestamp dans le format normal; 2012-12-29 17:14:53
Je pensais qu'un MySQL événement serait la voie à suivre au lieu d'une tâche cron.
J'ai ce que je suppose que c'est une question simple pour une expérience de SQL personne, comment puis-je code la suppression des messages en partie entre parenthèses ci-dessous?
Un exemple serait apprécié, Merci.
DELIMITER $$
CREATE EVENT delete_event
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
ON COMPLETION PRESERVE
DO
BEGIN
DELETE messages WHERE date >= (the current date - 7 days);
END;
$$;
source d'informationauteur Mike
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer d'utiliser cette condition:
De sorte que l'ensemble du script SQL ressemble à ceci:
Cependant, à ta place, je résoudre ce problème avec un simple script cron. Les raisons pour cela est simple: il est plus facile de maintenir le code, pas de laide SQL solutions de contournement, s'intègre harmonieusement avec votre système.
Cela devrait faire l'affaire.
Pour ceux qui sont sur un hébergement mutualisé, comme 1and1, et ne peut pas créer des événements, une alternative est d'utiliser webcron
Vous avez juste besoin de dire webcron l'url du script php que vous souhaitez exécuter, et ils vont la déclencher pour vous à des intervalles que vous voulez