Ну, это зависит от того, как вы определяете измененную строку.
Номер 2 работает, но любое изменение строки вообще изменит метку времени, даже обновление, которое фактически ничего не изменит (скажем, обновление значения с 1 до 1).Звучит глупо, кто бы это сделал?Но это легко сделать, когда вы используете динамический код.
Номер 1 можно изменить, чтобы обеспечить разницу между вставленными и удаленными таблицами в триггере и устранить проблему, связанную с вариантом 2.
Однако предположим, что у вас есть три различных канала, каждый из которыхсодержат разные столбцы, которые могут быть в связанных таблицах, и вы хотите отправить, только если один из них действительно изменяется.Теперь триггер не достаточно специфичен для ваших каналов.Мы используем отслеживание изменений данных, чтобы определить, какие строки изменились с момента последней отправки (которые мы храним как часть всех наших пакетов служб SSIS), а затем вычисляем данные хеш-строк для определенных столбцов, чтобы увидеть, действительно ли изменились интересующие нас данные.Я также видел, как люди используют таблицу истории отправленных сообщений, а затем сравнивают эти значения (если вас интересует только одно или два поля в таблице) с теми, которые фактически изменились в таблице отслеживания изменений.Когда у вас есть конкретное требование, вы получаете довольно сложную систему для его поддержки (я просто даю вам приблизительную идею).