En théorie, un déclencheur peut maintenir à jour un tableau récapitulatif avec précision, tant que :
- Vous ne désactivez pas le déclencheur
- Vous ne mettez pas à jour le tableau récapitulatif directement
- Vous n'apportez pas de modifications aux données source via TRUNCATE TABLE (comme vous l'avez noté)
Aussi :
- Vous devez amorcer le tableau récapitulatif avec une valeur initiale correcte
- Vous devez utiliser InnoDB pour la table source et la table récapitulative, les mises à jour sont donc atomiques
La gestion d'un tableau récapitulatif est un exemple de dénormalisation . Comme pour toute dénormalisation, cela risque d'entraîner des anomalies de données. Vous êtes responsable du maintien de l'intégrité des données ; la base de données est limitée dans la mesure où elle peut vous aider à le faire.
Je vous recommande de revérifier le tableau récapitulatif de temps en temps (par exemple, toutes les heures peuvent suffire) pour vous assurer qu'il n'est pas désynchronisé, et corrigez-le si c'est le cas. C'est à vous de le faire, car la base de données ne peut pas le vérifier pour vous.