Em teoria, um gatilho pode manter uma tabela de resumo atualizada com precisão, desde que:
- Você não desativa o acionador
- Você não atualiza a tabela de resumo diretamente
- Você não faz alterações nos dados de origem por meio de TRUNCATE TABLE (como você observou)
Também:
- Você deve propagar a tabela de resumo com um valor inicial correto
- Você deve usar o InnoDB tanto para a tabela de origem quanto para a tabela de resumo, portanto, as atualizações são atômicas
Manter uma tabela de resumo é um exemplo de desnormalização . Como em toda desnormalização, isso traz o risco de anomalias de dados. Você é responsável por manter a integridade dos dados; o banco de dados é limitado em quanto pode ajudá-lo a fazer isso.
Eu recomendo que você precise verificar novamente a tabela de resumo de tempos em tempos (por exemplo, de hora em hora pode ser suficiente) para garantir que ela não tenha saído de sincronia e corrigi-la se tiver. Cabe a você fazer isso, porque o banco de dados não pode verificar isso para você.