Automatisation de la suppression de lignes dans MySQL avec des procédures stockées
Vous souhaitez créer une procédure stockée MySQL qui supprime les lignes de plus de sept jours de toutes les tables à minuit tous les jours. Bien que des solutions de script existent, cet article se concentre sur une approche plus automatisée utilisant la fonctionnalité EVENT de MySQL.
Création de la procédure
Tout d'abord, assurez-vous que le planificateur d'événements est activé :
SET GLOBAL event_scheduler = ON;
Ensuite, créez un événement qui se déclenche quotidiennement à 00:00 :
CREATE EVENT `delete7DayOldRows` ON SCHEDULE EVERY 1 DAY STARTS '2023-03-01 00:00:00' ON COMPLETION PRESERVE DO -- Your delete logic here END;
Définition de la logique de suppression
À l'intérieur du bloc DO de l'événement, spécifiez la logique de suppression. Voici un exemple :
BEGIN DECLARE tableName VARCHAR(255); DECLARE cursor CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_database_name'; OPEN cursor; FETCH cursor INTO tableName; WHILE tableName IS NOT NULL DO DELETE FROM `your_database_name`.`tableName` WHERE CURDATE() - INTERVAL 7 DAY > updateDt; FETCH cursor INTO tableName; END WHILE; CLOSE cursor; END;
Cette logique parcourt toutes les tables de la base de données spécifiée et supprime les lignes où la colonne updateDt date de plus de sept jours.
Considérations
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!