Teoretycznie wyzwalacz może dokładnie aktualizować tabelę podsumowania, o ile:
- Nie wyłączasz wyzwalacza
- Nie aktualizujesz bezpośrednio tabeli podsumowań
- Nie wprowadzasz zmian w danych źródłowych za pomocą TRUNCATE TABLE (jak zauważyłeś)
Również:
- Musisz podać w tabeli podsumowania poprawną wartość początkową
- Musisz używać InnoDB zarówno dla tabeli źródłowej, jak i tabeli podsumowań, więc aktualizacje są niepodzielne
Prowadzenie tabeli podsumowującej jest jednym z przykładów denormalizacji . Jak w przypadku każdej denormalizacji, wiąże się to z ryzykiem anomalii danych. Jesteś odpowiedzialny za utrzymanie integralności danych; baza danych jest ograniczona w tym, jak bardzo może ci w tym pomóc.
Zalecam, abyś od czasu do czasu sprawdzał tabelę podsumowań (np. godzinowa może wystarczyć), aby upewnić się, że nie wyszła z synchronizacji, i popraw ją, jeśli tak. To zależy od Ciebie, ponieważ baza danych nie może tego sprawdzić za Ciebie.