Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment une SqlCacheDependency sait-elle quand communiquer avec des écouteurs lorsque les données d'une table changent ?

Une nouvelle table est créée dans votre base de données qui contient le nom de la table sur laquelle vous souhaitez vérifier les mises à jour et un numéro de modification. Chaque table que vous avez configurée pour sqldependency a un déclencheur configuré pour les mises à jour/insertions qui incrémente le changeid dans la nouvelle table que je viens de décrire.

Votre modèle mental de la façon dont cela fonctionne est à l'envers. Votre application vérifie le journal pour déterminer si une table a été modifiée.

Donc, si la table du journal des modifications (c'est ainsi que je l'appelle) suit deux tables de votre base de données (produit, utilisateur), cela ressemblera à ceci.

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

Maintenant, si vous modifiez quoi que ce soit dans l'une de ces tables, le déclencheur incrémentera ChangeNumber et nous savons maintenant qu'ils ont changé.

Évidemment, il y a plus que cela, mais c'est l'idée générale.

Remarque :Il convient de noter que vous pouvez invalider une page si une ou plusieurs tables changent, donc si votre page a une dépendance configurée pour ces deux tables, si l'une d'elles change, elle invalidera la page mise en cache et remettra en cache une mise à jour. version.