Truncate partiel d'une table -> oui / non ?

Rechercher

Truncate partiel d'une table -> oui / non ?

Par papy71  -  3 reponses  -  Le 06/07/2020 10:44  -  Editer  - 

Bonjour à tous,
Bonjour Maître Cyrano,
ma question est dans le titre...
en PHP pdo et MySQL.
Mais concrètement, j'enregistre dans un table simplement ceci:
Id Jour Valeur

Id est un int avec clé primaire.
Jour = DateTime
Valeur float
Et uniquement entre 06h et 22h chaque jour.
je souhaiterai garder que les 7 derniers jours sur cette table.
Je pense qu'avec " truncate " c'est possible et en plus mon Id repart de '0',contrairement à ' delete ', ce qui évite que mes Id augmentent au fil des jours.
J'enregistre toutes les minutes.
En finalité avec une tâche planifiée chaque soir ce script va mettre à jour ma table.
Je ne trouve pas d'info dans le manuel php autre que l'effacement de la table entière, d'où ma question.
Merci d'avance.
Guy

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 11/07/2020 23:14  -  Haut de page  - 

Bonsoir Papy71, désolé pour le délai, je viens seulement de voir le post.

Pour la commande TRUNCATE, c'est tout ou rien. Cette commande vide complètement la table et remet à zéro l'auto-incrément.

Donc la solution, ce sera un DELETE avec une clause WHERE précisant « avant telle date »

SI c'est quelque chose qui doit être fait périodiquement dans une tâche planifiée, la clause peut être écrite de façon à ce que la date courante serve de point de repère en ajoutant un intervalle de tant de jours. Ça se manipule assez bien, je recommande de chercher « INTERVAL » dans la documentation pour trouver des exemples pratiques. Et pour mettre au point la requête, on remplace le « DELETE » par un « SELECT * » et on voit alors ce qui serait supprimé si on remettait la commande DELETE.

 
Par papy71  -  Le 12/07/2020 22:19  -  Haut de page  - 

Bonsoir Cyrano,
Je vous croyais en vacances ;-) c'est la saison....

Merci,pour l'info sur TRUNCATE, je n'avais pas cette connaissance. Je vais regarder la doc suivant votre conseil.
Si j'ai bien compris les 'Id' ne repartent pas de '0' avec un DELETE partiel dans une table, j'ai un enregistrement par minute.
Je pensais aussi avec une tâche planifiée faire une copie des 7 derniers jours dans une autre table et remise à zéro de la table initiale, ceci une fois par semaine comme le dimanche à 23h59 par exemple.

La finalité est de garder par semaine l'enregistrement du soleil de chaque jour entre 6h et 22 h que j'enregistre dans ma table initiale.Histoire d'avoir un historique graphique du rayonnement solaire au fil des mois....
Merci encore.

 
Par Cyrano  -  Le 12/07/2020 22:25  -  Haut de page  - 

Oui, tout ça est tout à fait faisable avec deux requêtes :
- une pour la sauvegarde dans une autre table avec un « INSERT SELECT »
- une pour vider partiellement la table;

Revenez en cas de difficultés.

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |