SQL Server has two statements that can be
very useful inside a trigger - UPDATED({column_name})
and COLUMNS_UPDATED() which provide a way to determine which column(s) were
updated by the current sql statement. BOL has many details on this.
However, it is important to note that these statements do not indicate if the
data was changed,
only if the column(s) were named
in the sql statement. For example, if the data was "1" and the sql
says "SET {column_name} = '1' " then that column will be reported as being
updated when in fact the contents of the field did not change.
Most .NET applications will name all the fields when updating data, so these
statements aren't very useful on their own; it is really when a trigger is
invoked by another trigger, or a batch update statement, when using those
statements can be to your advantage.