2010-11-25 7 views
3

Итак, у меня есть простой триггер обновления, который копирует удаленные данные в другую таблицу того же формата с добавлением измененной даты. Он отлично работает, однако в коде приложения много случаев, когда выполняется обновление, которое фактически не изменяет никаких значений.SQL Update Trigger не всегда обновляется

Я стараюсь, чтобы их не подхватили в аудиторских таблицах.

Есть ли у кого-нибудь предложения по поводу того, как я могу это исправить, без смены кода приложения. Возможно, простое сравнение строк для проверки изменений?

Благодаря

ответ

2

К сожалению, это столбец сравнения столбца в триггере

Edit: для не гарантируется 100% точность, вы можете использовать CHECKSUM(*). HashBytes Лучше

+0

Noooo! это действительно единственный способ? Я надеялся избежать этого :( – 2010-11-25 10:35:57

0

Автор этого article details интересное решение, которое будет работать в некоторых случаях. Он выбирает из текущих и удаленных таблиц FOR XML, запускает их через HashBytes() и сравнивает результаты.

Статья содержит хорошо написанный источник. Я смог быстро изменить его для использования в моей схеме. Я отклонил преобразование HashBytes() и просто сравнил значения XML, чтобы обойти потенциальные проблемы с помощью HashBytes(). Я протестировал решение легко и, похоже, работает так, как ожидалось.

Существует ссылка в разделе комментариев статьи к другой интересной статье по этому вопросу.