sql >> Database >  >> RDS >> Mysql

Triggers gebruiken als alternatief voor SQL-aggregatiefuncties?

In theorie kan een trigger een overzichtstabel nauwkeurig up-to-date houden, zolang:

  • Je schakelt de trigger niet uit
  • U werkt de overzichtstabel niet rechtstreeks bij
  • U brengt geen wijzigingen aan in de brongegevens via TRUNCATE TABLE (zoals u heeft opgemerkt)

Ook:

  • U moet de overzichtstabel voorzien van een correcte beginwaarde
  • Je moet InnoDB gebruiken voor zowel de brontabel als de overzichtstabel, dus updates zijn atomair

Het bijhouden van een overzichtstabel is een voorbeeld van denormalisatie . Zoals bij alle denormalisatie, riskeert dit gegevensafwijkingen. Je bent verantwoordelijk voor het handhaven van de gegevensintegriteit; de database is beperkt in de mate waarin het u daarbij kan helpen.

Ik raad u aan de overzichtstabel van tijd tot tijd nogmaals te controleren (bijv. elk uur kan voldoende zijn) om er zeker van te zijn dat deze niet is gesynchroniseerd, en corrigeer deze als dat wel het geval is. Het is aan jou om dit te doen, omdat de database het niet voor je kan controleren.




  1. MySQL-trigger om kolom in te stellen op max + 1 werkt niet

  2. SQL Server-prestaties voor het wijzigen van de tabel wijzigen van het gegevenstype van de wijziging van de kolom

  3. Beperking op naam laten vallen in Postgresql

  4. INSERT INTO met SubQuery MySQL