Dans cet article, nous aborderons le problème de la suppression des enregistrements d'une base de données MySQL après un intervalle de temps spécifié.
Problème :
Messages dans une table MySQL avec "id", Les colonnes « message » et « date » doivent être supprimées après sept jours. Les dates sont spécifiées au format « AAAA-MM-JJ HH:MM:SS ». Il est proposé d'utiliser un événement MySQL plutôt qu'une tâche cron pour ce processus de suppression.
Requête :
La requête ci-dessous inclut une condition révisée pour supprimer les messages datant de plus de 7 ans. jours :
CREATE EVENT delete_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY ON COMPLETION PRESERVE DO BEGIN DELETE messages WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY); END;
Clarification :
Au lieu d'utiliser la condition suggérée dans la question ("DELETE messages WHERE date >= (la date actuelle - 7 jours)"), nous utilisons "WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY)". Cela garantit que les messages datant d'exactement 7 jours sont supprimés, alors que la condition précédente ne les supprimerait pas.
Recommandation :
Bien que les événements MySQL puissent être utilisés pour cela Dans ce but, l'utilisation d'un simple script cron est également une option valable. Il offre une maintenance plus facile, évite les solutions de contournement SQL complexes et s'intègre parfaitement au système.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!