У меня вопрос о функции TSQL Update. Например, у меня есть таблица с полем Name. Если я проверю, изменилось ли имя поля или нет в триггере After Update, это выглядит следующим образом:
if Update(Name)
Begin
-- process
End
Будет ли Update все еще возвращать TRUE, даже если имя не изменено? Следующий оператор обновления обновит его с тем же значением:
SELECT @v_Name = Name From MyTable Where Id = 1;
Update MyTable Set Name = @v_Name where Id = 1;
Если Update() возвращает TRUE, даже значение Name не изменяется, мне нужно сравнить значение во вставленных и удаленных виртуальных таблицах, чтобы узнать, действительно ли значение действительно изменилось?
Кстати, вставленные и удаленные являются виртуальными таблицами, и они могут содержать более одного ряда данных, если несколько строк данных изменяются одним инструкцией TSQL INSERT или UPDATE. В случае более чем одной записи количество номеров строк в вставленных и удаленных виртуальных таблицах одинаково и каково истинное значение Update (Name) как TRUE? Означает ли это, что по крайней мере один из них изменен? Или Update (Name) означает, что поле Name было задано оператором Update независимо от того, изменилось ли значение?
Я использую SQL-сервер Microsoft SQL 2005.