Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utiliser des déclencheurs comme alternative à la fonction d'agrégation SQL ?

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.