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

Bruger du triggere som et alternativ til SQL-aggregater?

I teorien kan en trigger holde en oversigtstabel opdateret nøjagtigt, så længe:

  • Du deaktiverer ikke triggeren
  • Du opdaterer ikke oversigtstabellen direkte
  • Du foretager ikke ændringer i kildedataene gennem TRUNCATE TABLE (som du har bemærket)

Også:

  • Du skal se oversigtstabellen med en korrekt startværdi
  • Du skal bruge InnoDB til både kildetabellen og oversigtstabellen, så opdateringer er atomare

Vedligeholdelse af en oversigtstabel er et eksempel på denormalisering . Som med al denormalisering risikerer dette dataanomalier. Du er ansvarlig for at opretholde dataintegriteten; databasen er begrænset i, hvor meget den kan hjælpe dig med at gøre det.

Jeg anbefaler, at du skal dobbelttjekke oversigtstabellen fra tid til anden (f.eks. time kan være nok) for at sikre, at den ikke er gået ud af synkronisering, og rette den, hvis den har. Det er op til dig at gøre dette, fordi databasen ikke kan tjekke det for dig.




  1. mysql:grupper efter ID, få højeste prioritet for hvert ID

  2. MySQL Java Update Syntaks

  3. Ringer til Python fra Oracle

  4. Sådan tilføjes en ikke-null-begrænsning på kolonne, der indeholder nul-værdier