In SQL trigger programming, sometimes people put
if ( update( FIELD_NAME ) )
to determine if a field is being changed or not. However the SQL server doesn’t seems to really check the previous and new value. As long as the field is being updated in the UPDATE statement, this update() function will return true.
So if you want to record the real value change, you have to compare the value from deleted and inserted table yourself.