Fonction de mise à jour en TSQL déclencheur

J'ai une question à propos de TSQL fonction de mise à Jour. Par exemple, j'ai une table avec un champ Nom. Si je vérifie si le Nom du champ est modifié ou pas Après la mise à Jour de déclenchement aime ceci:

  if Update(Name)
  Begin
    -- process
  End

Sera la mise à Jour renvoie toujours VRAI même si le Nom n'est pas modifié? La mise à jour suivante déclaration de mise à jour avec la même valeur:

  SELECT @v_Name = Name From MyTable Where Id = 1;
  Update MyTable Set Name = @v_Name where Id = 1;

Si la mise à Jour() renvoie TRUE, même la valeur de Nom n'est pas modifié, ce que je dois comparer la valeur dans le inserted et deleted tables virtuelles pour savoir si la valeur est vraiment changé?

Par le chemin, la inserted et deleted sont des tables virtuelles et ils peuvent contenir plusieurs lignes de données si plusieurs lignes de données sont modifiées par un TSQL instruction INSERT ou UPDATE. Dans le cas de plus d'un records, le nombre de lignes dans inserted et deleted tables virtuelles de la même et quel est le véritable sens de la mise à Jour(Nom) comme VRAI? Ça veut dire que l'un au moins est-il changé? Ou effectue une mise à Jour(Nom) signifie que le champ de Nom a été fixé par instruction de mise à Jour, peu importe si la valeur est modifiée?

Le serveur SQL que j'utilise Microsoft SQL 2005.

InformationsquelleAutor David.Chu.ca | 2009-08-08