理論的には、トリガーは、次の場合に限り、サマリーテーブルを正確に更新し続けることができます。
- トリガーを無効にしないでください
- サマリーテーブルを直接更新しないでください
- TRUNCATE TABLEを介してソースデータに変更を加えることはありません(ご指摘のとおり)
また:
- サマリーテーブルに正しい初期値をシードする必要があります
- ソーステーブルとサマリーテーブルの両方にInnoDBを使用する必要があるため、更新はアトミックです
要約テーブルの維持は、非正規化 の一例です。 。すべての非正規化と同様に、これはデータ異常のリスクがあります。あなたはデータの完全性を維持する責任があります。データベースは、それを行うのにどれだけ役立つかという点で制限されています。
サマリーテーブルを時々再確認して(たとえば、1時間ごとで十分な場合があります)、同期が外れていないことを確認し、同期が取れていない場合は修正することをお勧めします。データベースはそれをチェックできないので、これを行うのはあなた次第です。