44 votes

Tronquer avec condition

truncate -> cela réinitialise la table entière, existe-t-il un moyen via truncate de réinitialiser des enregistrements/conditions de vérification particuliers.

Par exemple : je souhaite réinitialiser toutes les données et conserver les 30 derniers jours dans le tableau.

Merci.

71voto

ceejayoz Points 85962

Non, TRUNCATE c'est tout ou rien. Vous pouvez faire un DELETE FROM <table> WHERE <conditions> mais cela perd les avantages de vitesse de TRUNCATE .

4voto

Felipe Torres Points 274

En réponse à ta question : "Je veux réinitialiser toutes les données et conserver les 30 derniers jours dans la table."

vous pouvez créer un événement. Vérifiez https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html

Par exemple:

 CREATE EVENT DeleteExpiredLog
ON SCHEDULE EVERY 1 DAY
DO
DELETE FROM log WHERE date < DATE_SUB(NOW(), INTERVAL 30 DAY);

Exécutera un nettoyage quotidien dans votre table, en gardant les données des 30 derniers jours disponibles

0voto

user4603856 Points 1

Vous pouvez simplement exporter la table avec une clause de requête à l'aide de datapump et la réimporter avec la clause table_exists_action=replace. Cela laissera tomber et recréera votre table et prendra très moins de temps. Veuillez lire à ce sujet avant de mettre en œuvre.

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