Comment faire pour déterminer si quelque chose a changé dans déclencheur de mise à jour en t-sql
Comment puis-je déterminer si quelque chose a changé dans déclencheur de mise à JOUR? Par exemple, j'ai de la table nom d'une personne avec un seul NOM de la colonne qui contient la valeur "Mike". Si je lance
UPDATE person SET NAME = 'Mike'
comment puis-je déterminer le déclencheur de mise à jour, rien n'a changé? Je sais que sur
Mise à JOUR(col)
déclaration, mais je ne veux pas d'itérer sur les colonnes. Est-il un autre moyen pour accomplir cette?
Vous devez vous connecter pour publier un commentaire.
Mise à jour(colonne) indique simplement que la colonne a participé à la mise à jour, mais pas que sa valeur a changé. Par exemple,
rendements vrai dans la mise à jour(nom), même si le Nom n'a pas été modifié dans n'importe quelle ligne.
Pour vérifier si de nouvelles valeurs diffèrent des anciens, que vous devez employer sauf car, sauf permettra de supprimer des lignes de jeu supérieur qui existent dans le bas. En tant que personne de la table a probablement clé primaire il n'y a pas un danger de suppression d'élément modifié qui a une contrepartie dans supprimés. Toutefois, si vous décidez de changer de
*
à une liste d'intéressant colonnes assurez-vous d'inclure clé primaire.Avantage est que cela fonctionne pour les insertions trop parce Supprimés seront vides, et toutes les lignes de insérées seront retournés.
Se référant à Arion de la réponse ci-dessus:
Assurez-vous de comparer des enregistrements par leur clé primaire lors de la Sélection d'une JOINTURE puisque les tables INSERTED et DELETED peut contenir plus d'un enregistrement, qui, si elles sont ignorées, peuvent entraîner la fois les mauvais résultats de la requête et de l'impact négatif sur les DB de rendement.