Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

In che modo una SqlCacheDependency sa quando comunicare a qualsiasi listener quando i dati in una tabella cambiano?

Viene creata una nuova tabella nel database che contiene un nome della tabella su cui si desidera controllare gli aggiornamenti e un numero di modifica. Ogni tabella che hai impostato per sqldependency ha un trigger impostato per aggiornamenti/inserzioni che incrementa il changeid nella nuova tabella che ho appena descritto.

Il tuo modello mentale di come funziona è al contrario. L'applicazione controlla il registro per determinare se una tabella è stata modificata.

Quindi, se la tabella del registro delle modifiche (è così che la chiamo) tiene traccia di due tabelle nel tuo database (Prodotto, Utente) sarà simile a questa.

+Table Name + ChangeNumber +
| Product   | 1            |
+-----------+--------------+
| User      | 1            |
+-----------+--------------+

Ora, se modifichi qualcosa in una di queste tabelle, il trigger aumenterà ChangeNumber e ora sappiamo che sono cambiati.

Ovviamente c'è di più in questo, ma questa è l'idea generale.

Nota:va notato che puoi invalidare una pagina se una o più tabelle cambiano, quindi se la tua pagina ha una dipendenza impostata per entrambe queste tabelle, se una di esse cambia invaliderà la pagina memorizzata nella cache e ricollegherà un aggiornamento versione.