In teoria, un trigger può mantenere una tabella di riepilogo aggiornata in modo accurato, purché:
- Non disabiliti il trigger
- Non aggiorni direttamente la tabella di riepilogo
- Non apporti modifiche ai dati di origine tramite TRUNCATE TABLE (come hai notato)
Inoltre:
- Devi seminare la tabella di riepilogo con un valore iniziale corretto
- Devi utilizzare InnoDB sia per la tabella di origine che per la tabella di riepilogo, quindi gli aggiornamenti sono atomici
Il mantenimento di una tabella di riepilogo è un esempio di denormalizzazione . Come per tutte le denormalizzazioni, ciò rischia di avere anomalie nei dati. Sei responsabile del mantenimento dell'integrità dei dati; il database è limitato in quanto può aiutarti a farlo.
Ti consiglio di ricontrollare la tabella di riepilogo di tanto in tanto (ad esempio, l'orario potrebbe essere sufficiente) per assicurarti che non sia andato fuori sincronia e correggerlo se lo è. Sta a te farlo, perché il database non può controllarlo per te.