sql >> Databasteknik >  >> RDS >> Mysql

Använder du triggers som ett alternativ för SQL-aggregatfunktion?

I teorin kan en utlösare hålla en sammanfattningstabell uppdaterad korrekt, så länge som:

  • Du inaktiverar inte utlösaren
  • Du uppdaterar inte sammanfattningstabellen direkt
  • Du gör inga ändringar i källdata via TRUNCATE TABLE (som du noterade)

Även:

  • Du måste se översiktstabellen med ett korrekt initialvärde
  • Du måste använda InnoDB för både källtabellen och sammanfattningstabellen, så uppdateringar är atomära

Att underhålla en sammanfattningstabell är ett exempel på denormalisering . Som med all denormalisering riskerar detta dataavvikelser. Du är ansvarig för att upprätthålla dataintegritet; databasen är begränsad i hur mycket den kan hjälpa dig att göra det.

Jag rekommenderar att du behöver dubbelkolla sammanfattningstabellen då och då (t.ex. timvis kan räcka) för att se till att den inte har gått ur synk, och korrigera den om den har gjort det. Det är upp till dig att göra detta, eftersom databasen inte kan kontrollera det åt dig.




  1. Använd en utlösare för att stoppa en infogning eller uppdatering

  2. mysql matcha/mot

  3. Crystal Reports vs Microsoft SQL Server Reporting Services

  4. Varför mysql hit index när kolumn wrap med datum funktion