Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo dei trigger come alternativa alla funzione di aggregazione SQL?

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.